標籤:alert http jsp int class add file and back
在Hybrid App中網頁都是顯示在原生的WebView中,js與原生通訊都是靠WebView提供的支援方式來實現的,而將這個實現方式抽象封裝出來的模組,就是JsBrage。
Android:
對於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()
訊息
各有優缺點,參考 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的互動橋樑