WebView和js的互調
(建立於2017/5/20)
一個網頁中有如下程式碼
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<script language="javascript">
/* This function is invoked by the activity */
function wave() {
alert("Android呼叫Js啦");
}
</script>
<body>
<!-- Js呼叫Android程式碼 -->
<a onClick="window.demo.onCallback()">點我!</a>
</body>
</html>
安卓程式碼如下
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.webView);
//在webView裡面開啟網頁
webView.setWebViewClient(new WebViewClient());
//允許在webview裡面彈出js的窗體
webView.setWebChromeClient(new WebChromeClient());
//允許js的執行
webView.getSettings().setJavaScriptEnabled(true);
//載入assets目錄下的網頁
webView.loadUrl("file:///android_asset/demo.html");
//把java裡面的物件傳遞給js
webView.addJavascriptInterface(new JsCallJava() {
@JavascriptInterface
@Override
public void onCallback() {
Toast.makeText(getApplicationContext(),"JavaScript呼叫的java程式碼",Toast.LENGTH_SHORT).show();
}
}, "demo");
}
1.js 呼叫Java
我們知道,呼叫Java中一個方法,只需要獲取到這個Java物件,然後物件.方法名的方式呼叫,在網頁檔案中,有這樣一行
<a onClick="window.demo.onCallback()">點我!</a>
開啟網頁後點選點我兩個字執行的就是一個onclick方法,window.demo表示的就是Java中的物件,onCallback()就是Java中被呼叫的方法,也就是點選“點我”後執行Java中的一個onCallback()方法,那麼安卓中如何操作?
關鍵程式碼如下:
//把java裡面的物件傳遞給js
webView.addJavascriptInterface(new JsCallJava() {
@JavascriptInterface
@Override
public void onCallback() {
Toast.makeText(getApplicationContext(),"JavaScript呼叫的java程式碼",Toast.LENGTH_SHORT).show();
}
}, "demo");
public interface JsCallJava{
public void onCallback();
}
設定一個介面,介面中的回撥方法為js重呼叫的方法,很關鍵的一行@JavascriptInterface必須加上,指明這是一個js介面,否則無法執行
2.Java呼叫js
假如我們現在想呼叫網頁中的wave方法
function wave() {
alert("Android呼叫Js啦");
}
只需要這樣執行
webView.loadUrl("javascript:wave()");
關鍵一點必須設定,不然無法彈出alert
//允許在webview裡面彈出js的窗體
webView.setWebChromeClient(new WebChromeClient());
相關文章
- WKWebView和WebView與JS的互動方式WebViewJS
- webview與JS的互動WebViewJS
- Android webview JS 互動AndroidWebViewJS
- WebView深度學習(一)之WebView的基本使用以及Android和js的互動WebView深度學習AndroidJS
- Android webview 與 js(Vue) 互動AndroidWebViewJSVue
- WebView與JS的互動,以及注意事項WebViewJS
- flutter webView 使用以及與 js 互操作FlutterWebViewJS
- Flutter使用JsBridge與WebView互動FlutterJSWebView
- Flutter WebView與JS互動簡易指南FlutterWebViewJS
- Android與JS互調AndroidJS
- Android Webview Java和Javascript安全互動AndroidWebViewJavaScript
- 深度學習js與安卓的互動以及WebView的那些坑深度學習JS安卓WebView
- Android 與WebView中的js程式碼的互動記錄AndroidWebViewJS
- webview js和java相互呼叫WebViewJSJava
- JockeyJS——優秀的WebView與JS互動開源庫使用和解析JSWebView
- android 的webView載入h5,和h5的互動(java和JavaScript的互動)AndroidWebViewH5JavaScript
- Android:是時候掌握WebView與Js的互動技術了AndroidWebViewJS
- 2017-12-04(週一)JS和OC互調JS
- WebView詳解與簡單實現Android與H5互調WebViewAndroidH5
- 記一則iOS封裝SDK的開發過程之WebView與JS的互動iOS封裝WebViewJS
- 最全面總結 Android WebView與 JS 的互動方式(含例項Demo)AndroidWebViewJS
- Android WebView:這是一份 詳細 & 易懂的WebView學習攻略(含與JS互動、快取構建等)AndroidWebViewJS快取
- Android與WebView資料互動AndroidWebView
- Android 原生 WebView 與 JavaScript 互動AndroidWebViewJavaScript
- WPF和js互動 WebBrowser資料互動JSWeb
- 短視訊開發,Android和JS互調實現圖片傳遞AndroidJS
- WebView與APP互動實戰記錄WebViewAPP
- iOS高階-WebView & JavaScript互動(附DEMO)iOSWebViewJavaScript
- WebViewJavascriptBridge JS和OC互動WebViewJavaScriptJS
- JS於string 和 json互轉物件JSON物件
- Android WebView —— Java 與 JavaScript 互動總結AndroidWebViewJavaScript
- WKWebView詳解&WKWebVieW和JS互動WebViewJS
- webView與js互動——獲取通訊錄手機號並顯示運營商WebViewJS
- WPF和js互動 呼叫窗體中的方法JS
- Android Webview和ScrollView衝突和WebView使用總結AndroidWebView
- Android混合開發之WebView與Javascript互動AndroidWebViewJavaScript
- Android 原生和 JS 互動實踐AndroidJS
- Vue和Node.js互動之tokenVueNode.js