1. 程式人生 > >Android webview呼叫js程式碼無效 webView.loadUrl("javascript:alert('hello')")

Android webview呼叫js程式碼無效 webView.loadUrl("javascript:alert('hello')")

1) WebSettings設定支援javascript

mWebView.getSettings().<span style="font-family: STHeiti;">setJavaScriptEnabled(true);</span>

2) 在執行指令碼前,要有document物件,至少得load一個空白頁

webView.loadData(“”,"text/html","UTF-8");

3)如果還是不行的話,就應該是因為第一個還沒執行完呢

webView.loadData(“”,"text/html","UTF-8");

webView.loadUrl("javascript:alert('hello')");

解決這個問題有三個辦法  1)從介面按鈕呼叫 2)延時呼叫 3)在onPageFinished中呼叫

mWebView.setWebViewClient(new MyWebViewClient());

private class MyWebViewClient extends WebViewClient {

@Override

public void onPageFinished(WebView webView, String url) {

webView.loadUrl("javascript:"+script);

}

}

4)console/alert

以上三點完成後,js就已經可以執行了,可是為什麼console.log和alert沒有效果呢?

因為這2個要額外實現

mWebView.setWebChromeClient(new MyWebChromeClient());

private class MyWebChromeClient extends WebChromeClient {

@Override

public boolean onConsoleMessage(ConsoleMessage cm) {

Log.d("test", cm.message() + " -- From line " + cm.lineNumber() + " of " + cm.sourceId() );

return true;

}

@Override

public boolean onJsAlert(WebView view, String url, String message, JsResult result) {

Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show();

return true;

}

}