JsBrage -- App中WebView与JS的交互桥梁
Posted 猿来如此
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JsBrage -- App中WebView与JS的交互桥梁相关的知识,希望对你有一定的参考价值。
在Hybrid App中网页都是显示在原生的WebView中,js与原生通信都是靠WebView提供的支持方式来实现的,而将这个实现方式抽象封装出来的模块,就是JsBrage。
对于Android调用JS代码的方法有2种:
1. 通过WebView
的loadUrl(),目前项目中用的这种方式
mWebView.loadUrl("file:///android_asset/javascript.html"); mWebView.loadUrl("javascript:callJS()");
2. 通过WebView
的evaluateJavascript(),
Android 4.4 后才可使用
mWebView.evaluateJavascript("javascript:callJS()", new ValueCallback<String>() { @Override public void onReceiveValue(String value) { //此处为 js 返回的结果 } });
对于JS调用Android代码的方法有3种:
1. 通过WebView
的addJavascriptInterface()
进行对象映射 , Android 4.2版本之前有安全漏洞问题
2. 通过 WebViewClient
的shouldOverrideUrlLoading ()
方法回调拦截 url
3. 通过 WebChromeClient
的onJsAlert()
、onJsConfirm()
、onJsPrompt()
方法回调拦截JS对话框alert()
、confirm()
、prompt()
消息
各有优缺点,参考 https://blog.csdn.net/carson_ho/article/details/64904691
ios还没仔细研究:
Ios调用JS代码的方法:
1. loadURL方式可以
2. 在iOS代码处获取webView中javaScriptContext, 得到上下文。直接调用js方法
JS调用Ios代码的方法:
1. 与安卓一样,通过拦截url
2. 在iOS代码处获取webView中javaScriptContext, 得到上下文。注入方法,供js调用
3. 貌似还能直接调用js方法
以上是关于JsBrage -- App中WebView与JS的交互桥梁的主要内容,如果未能解决你的问题,请参考以下文章
背水一战 Windows 10 (64) - 控件(WebView): 加载指定 HttpMethod 的请求, 自定义请求的 http header, app 与 js 的交互