Android webview调用js代码无效 webView.loadUrl("javascript:alert('hello')")


利用WebView调用js的alert方法一直无效的解决办法

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

利用 webview调用js需要注意一下四点

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;

}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值