在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
是在加载页面之前注入的,这解释了为什么行为1,因为我在加载页面完成后调用了其他代码,但是当页面为白色而未加载时调用此代码。
答案 0 :(得分:3)
在我自己的项目中,我一直在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';");}
答案 1 :(得分:1)
document.getElementById(\"imPage\")
必须返回null
。
因此,没有imPage
元素,或者您当时没有加载页面。
我建议将整个js代码移到
document.addEventListener("DOMContentLoaded", function(event) {
//insert here
});
答案 2 :(得分:-2)
您必须启用如下的Javascript Seetings: -
view.getSettings().setJavaScriptEnabled(true); //Yes you have to do it