安卓:网页流量不加载自定义WebViewClient的javascript
-
26-09-2019 - |
题
我有哪些工作,直到我尝试添加自定义WebView
它会停止处理JavaScript的一个非常基本的webViewClient
。难道我做错了什么?有另一种方式来摆脱在WebView中的地址栏和菜单选项的?
browser = (WebView) findViewById(R.id.webkit);
WebSettings webSettings = browser.getSettings();
webSettings.setJavaScriptEnabled(true);
// uncommenting this line will remove address bar, but also stop JavaScript from loading
//browser.setWebViewClient(new InternalWebViewClient());
// even uncommenting this line will stop JavaScript from loading
//browser.setWebViewClient(new WebViewClient());
browser.setWebChromeClient(new InternalWebChromeClient());
if (savedInstanceState != null) {
browser.restoreState(savedInstanceState);
} else {
browser.loadUrl("http://site.with.javascript");
}
解决方案 2
由于某种原因WebKit的运行JS不同于浏览器 - 我最终得到解决此问题,迫使一些JS与以下行运行该页面加载了之后:
browser.loadUrl("javascript:document.getElementById('something').do.something()");
其他提示
在我的应用我用下面并没有地址栏,和JavaScript的工作(修改,以符合您的命名):
browser = (WebView) findViewById(R.id.webkit);
browser.getSettings().setJavaScriptEnabled(true);
browser.loadUrl("http://site.with.javascript");
我不setWebViewClient
或setWebChromeClient
做任何事情,它的工作原理所描述的。
我觉得你的代码的问题是,你的默认(内部)WebViewClient启用JavaScript和/或WebChromeClient则取代那些用新的,现在有新的属性。
如果您的移动电话setJavaScriptEnabled(true)
来的新任务后(和loadUrl
我觉得你的代码将工作之前。
余物通过这样的决定的帮助。涡卷计算在一个匿名函数。
"javascript:" + "(function(){ <YOUR CODE> })();"
不隶属于 StackOverflow