Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

heiyl/WebViewJavascriptBridge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

6 Commits

Repository files navigation

WebViewJavascriptBridge

WebViewJavascriptBridge for Android 是 WebViewJavascriptBridge for iOS/OSX的Android 实现, 项目里的WebViewJavascriptBridge.js.txt, 及测试网页ExampleApp.html 直接来自 WebViewJavascriptBridge for iOS/OSX.

使用方法:

  1. 复制WVJBWebViewClient.java 到 Android 项目 src 下的一个子目录中, 按需修改package名称;
  2. 复制WebViewJavascriptBridge.js.txt到assets目录;
  3. 子类化 WVJBWebViewClient, 例如:

class MyWebViewClient extends WVJBWebViewClient { public MyWebViewClient(WebView webView) {

		//需要支持JS send 方法时
		super(webView, new WVJBWebViewClient.WVJBHandler() {
			@Override
			public void request(Object data, WVJBResponseCallback callback) {		
		 		//处理代码
			}
		});
		
 	 	/*
	 	//不需要支持JS send 方法时
 		super(webView);
 		*/ 
	}
	@Override
	public void onPageFinished(WebView view, String url) {
		//处理代码
		super.onPageFinished(view, url);
	}
	@Override
	public boolean shouldOverrideUrlLoading(WebView view, String url) {
		//处理代码
		return super.shouldOverrideUrlLoading(view, url);
	}
  1. 设置WebView webView.setWebViewClient(new MyWebViewClient(webView));

  2. excuteJavascript 方法执行脚本:

excuteJavascript(script); //不需要返回值, script前不要加javascript:前缀

excuteJavascript(script, callback); //需要返回值, script前不要加javascript:前缀

当需要返回值时, Android 4.4及更高版本使用WebView.evaluateJavascript方法; 4.4以前版本调用 mWebViewCore.stringByEvaluatingJavaScriptFromString 内部方法, 该方法要求Javascript方法必须能返回字符串.

如: excuteJavascript("document.body.offsetHeight", new JavascriptCallback() { public void onReceiveValue(String height) { //错误, height=null } }); excuteJavascript("eval(document.body.offsetHeight).toString()", new JavascriptCallback() { public void onReceiveValue(String height) { //正确 } });

不需要返回值时可以直接调用: excuteJavascript("location.href='http://www.baidu.com/'");

Android 4.4及更高版本使用WebView.evaluateJavascript方法, 低于4.4版本使用WebView.loadUrl()方法

WebViewJavascriptBridge for iOS/OSX 的下载地址: https://github.com/jcccn/WebViewJavascriptBridge

About

WebViewJavascriptBridge for Android

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 87.2%
  • HTML 12.8%

AltStyle によって変換されたページ (->オリジナル) /