java - Android WebView onPageFinished BUG

标签 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';})()");
 }

我也尝试过:

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/

相关文章:

java servlet 使用角色登录

java - 如何在不使用JPCAP的情况下在java中捕获IP数据包

javascript - 如何使用 IP 网络摄像头应用程序中的 jpeg 流作为 html5 视频标签中的 src?

java - 如何只从列表中删除一个重复项?

android - 使用模拟器开发 Android Wear 表盘时未定义 EXTRA_PEER_ID

android - 从 Eclipse + SVN 迁移到 Android Studio

java - 使用 POI 将 HTML 数据表导出到 Excel

java - Ubuntu中使用javac编译时出错

Android "The payment method has been declined"每种支付方式

使用 Tesseract 的 Android OCR