Android(安卓)webview调用js代码无效 webView.loadUrl("javascript:alert('hello')")
webView.loadUrl("javascript:alert('hello')")
利用 webview调用js需要注意一下四点
1) WebSettings设置支持javascript
mWebView.getSettings().setJavaScriptEnabled(true);
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;
}
}
更多相关文章
- android实现字体闪烁动画的方法
- Android(安卓)Wifi模块分析(三)
- Android中dispatchDraw分析
- Android四大基本组件介绍与生命周期
- 在Fragment中设置控件点击方法,执行失败。
- Android(安卓)Service AIDL
- Android调用天气预报的WebService简单例子
- android打电话发短信
- android 拨打紧急号码,通话时开启免提功能实现