Android WebView onPageFinished BUG

Mar*_*edy 11 java android android-studio

在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';})()");
 }
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

webView.loadUrl(
                    "javascript:(function() { " +

                            "document.addEventListener(\"DOMContentLoaded\", function(event) {" +

                            "document.getElementById(\"imPage\").style.display='none';" +

                            "});" +

                            "})()");
Run Code Online (Sandbox Code Playgroud)

元素未隐藏和调试返回:

I/chromium: [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot read property 'style' of null", source: mywebsite/ (1)
Run Code Online (Sandbox Code Playgroud)

所以我认为javascript在加载页面之前注入,这解释了为什么行为1,因为我在加载页面完成后调用了其他代码,但是当页面为白色而未加载时调用此代码.

Spe*_*itz 3

在我自己的项目中,我一直evaluateJavascript(script,null)在 onPageFinished 中使用来隐藏 html 元素。view.loadUrl()应该以同样的方式工作。

如果您不需要稍后调用该函数,您可以简化 JS 字符串,而不是\"尝试使用'.

public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl("javascript:document.getElementById('imPage').style.display='none';");}
Run Code Online (Sandbox Code Playgroud)