我觉得自己问这个问题很愚蠢,但我一生都无法让它发挥作用。
因此,我四处搜索并找到了很多有关在 WebViewClient 中使用 onPageFinished 函数的帮助、指南等,我的代码很大程度上基于这些。
基本上,我有一个函数应该加载网页,然后使用 onPageFinished 隐藏该页面上的某些元素。尽管它隐藏了整个页面并且 web View 显示文本“none”,但实际上并没有这样做。 当我注释掉 onPageFinished 函数时,webview 加载页面很好,这让我相信它必须是 javascript,但根据 w3c 网站,我的 javascript 对于我想做的事情是正确的...
所以我的问题是,是否有人看到以下代码的问题和/或有人对可能实现我上述目标的其他内容提出建议?
如果您能提供任何帮助使其正常工作,我们将不胜感激。
代码:
public class MainActivity extends AppCompatActivity{
private WebView browser;
private String url = "https://www.google.com";
< onCreate calls cleanPage and other stuff >
public void cleanPage() {
browser = (WebView) findViewById(R.id.webview);
browser.getSettings().setJavaScriptEnabled(true);
browser.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
browser.loadUrl("javascript:document.getElementById('lga').style.display='none';");
}
});
browser.loadUrl(url);
}
}
注释:
-上面以google为例,lga是google的banner div的id。
-浏览器和 url 是全局的,因为一旦我开始 cleanPage 工作,我将添加其他函数来根据需要更改它们。
最佳答案
您需要在 javascript:
URL 末尾添加 void(0);
。否则,WebView 会将当前页面替换为 JS 计算的结果(在您的例子中,即字符串 "none"
)。
所以改变这个:
browser.loadUrl("javascript:document.getElementById('lga').style.display='none';");
至:
browser.loadUrl("javascript:document.getElementById('lga').style.display='none';void(0);");
关于javascript - onPageFinished Javascript WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32076726/