// setJavaScriptEnabled這句代碼在用TBS騰訊瀏覽服務的jar包時,顯示過時,可是仍是有效
webview.getSettings().setJavaScriptEnabled(true);
// 這裏的this,通常是指加載web頁面的context,name指的是js頁面調用方法前的一個對象,具體看js代碼
webview.addJavascriptInterface(this,"name");
複製代碼
WebSettings webSettings = webview.getSettings();
webSettings.setJavaScriptEnabled(true);
webview.loadUrl("file:///android_asset/html.html");
webview.addJavascriptInterface(MainActivity.this,"android");
複製代碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Carson</title>
<script>
function callAndroid()
{
// 因爲對象映射,因此調用test對象等於調用Android映射的對象
test.hello("js調用了android中的hello方法");
}
</script>
</head>
<body>
//點擊按鈕則調用callAndroid函數
<button type="button" id="button1" onclick="callAndroid()"></button>
</body>
</html>
複製代碼
<script>
window.onload = function () {
let temp = document.getElementById("test02");
temp.onclick = function (e) {
if(window.js_obj){
window.js_obj.testJS();
}
}
document.getElementById("test03").onclick = function(){
if(window.js_obj){
window.js_obj.shareTitleDesc("111","222");
}
};
}
</script>
複製代碼
<html>
<head>
<meta http-equiv="Content-Type" charset="GB2312"/>
<script type="text/javascript">
// 這個方法是js調用java的方法名,也就是說這個方法名要在java中實現
function javacalljs()
{
document.getElementById("showmsg").innerHTML = "JAVA調用了JS的無參函數";
}
// java調用js,咱們這說的就是android調用js,由於android用的java語法
function javacalljswith(arg){
document.getElementById("showmsg").innerHTML = (arg);
}
</script>
</head>
<body>
<h3>Web模塊</h3>
<h3 id="showmsg">調用js顯示結果</h3>
// 注意看,你能夠知道addJavascriptInterface後面的name是哪一個嗎?沒錯就是android
<input type="button" value="Js調用Java代碼" onclick="window.android.jsCallAndroid()"/>
<input type="button" value="Js調用Java代碼並傳參數" onclick="window.android.jsCallAndroidArgs('Js傳過來的參數')"/>
</body>
</html>
複製代碼
1.在Android4.4以上而且必須加入@JavascriptInterface纔有響應。 2.第一個方法不帶參數,第二方法帶參數javascript
@JavascriptInterface
public void jsCallAndroid(){
}
@JavascriptInterface
public void jsCallAndroidArgs(String args){
}
複製代碼
function callFromJava(str){
console.log(str);
}
複製代碼
public void javaCallJS(){
webView.loadUrl("javascript:callFromJava('call from java')");
}
複製代碼
mounted() {
//將要給原生調用的方法掛載到 window 上面
window.callJsFunction = this.callJsFunction
},
data() {
return {
msg: "哈哈"
}
},
methods: {
callJsFunction(str) {
this.msg = "我經過原生方法改變了文字" + str
return "js調用成功"
}
}
複製代碼
@Override
public void callVueJS() {
tbsWebView.post(new Runnable() {
@Override
public void run() {
webView.loadUrl("javascript:callJsFunction('soloname')");
}
});
}
複製代碼
webView.loadUrl("javascript:callJsFunction('soloname')");
複製代碼