在 Android OREO 中更新 API (27) 后,此代码不再工作:
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl("javascript:(function() {document.getElementById(\"imPage\").style.display='none';})()");
}
我也尝试过:
webView.loadUrl(
"javascript:(function() { " +
"document.addEventListener(\"DOMContentLoaded\", function(event) {" +
"document.getElementById(\"imPage\").style.display='none';" +
"});" +
"})()");
元素不隐藏并调试返回:
I/chromium: [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot read property 'style' of null", source: mywebsite/ (1)
所以我认为 javascript
是在加载页面之前注入(inject)的,这解释了为什么该行是 1,因为我在加载页面完成后调用了其他代码,但是当页面为白色时调用了此代码,未加载。
最佳答案
在我自己的项目中,我一直在 onPageFinished 中使用 evaluateJavascript(script,null)
来隐藏 html 元素。 view.loadUrl()
应该以同样的方式工作。
如果您以后不需要调用该函数,您可以简化您的 JS 字符串,而不是 \"
尝试使用 '
。
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl("javascript:document.getElementById('imPage').style.display='none';");}
关于java - Android WebView onPageFinished BUG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49288644/