Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
jesse01 committed Jul 3, 2015
2 parents ae9a1c1 + 5006f7d commit b5a7124
Showing 1 changed file with 9 additions and 19 deletions.
28 changes: 9 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ WebViewJavascriptBridge for Android 是 WebViewJavascriptBridge for iOS/OSX的An
3. 子类化 WVJBWebViewClient, 例如:

class MyWebViewClient extends WVJBWebViewClient {

public MyWebViewClient(WebView webView) {

//需要支持JS send 方法时
Expand Down Expand Up @@ -39,32 +40,21 @@ WebViewJavascriptBridge for Android 是 WebViewJavascriptBridge for iOS/OSX的An
4. 设置WebView
webView.setWebViewClient(new MyWebViewClient(webView));

5. excuteJavascript 方法执行脚本:
5. excuteJavascript 方法执行脚本:

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


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

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

如:
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) {
//正确
}
});
a. Android 4.4及更高版本下, 使用WebView.evaluateJavascript方法执行脚本;

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

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

b. Android 4.4以下版本若需要返回值则采用addJavascriptInterface机制实现;

WebViewJavascriptBridge for iOS/OSX 的下载地址: https://github.com/jcccn/WebViewJavascriptBridge
c. Android 4.4以下版本若不需要返回值则使用loadUrl方法执行脚本.


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

0 comments on commit b5a7124

Please sign in to comment.