我觉得不得不提出这个问题我觉得非常愚蠢,但我不能让我的生活得到它。
因此我在WebViewClient中使用onPageFinished函数搜索了很多帮助,指南等等,我的代码很大程度上基于这些。
基本上我有一个函数应该加载一个网页,然后使用onPageFinished隐藏该页面上的某些元素。虽然它隐藏了整个页面而webview显示文本" 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。
-browser和url是全局的,因为一旦我得到cleanPage工作,我将添加其他功能,将根据需要改变它们。
答案 0 :(得分:4)
您需要在void(0);
网址末尾添加javascript:
。否则,WebView会将当前页面替换为JS评估的结果(在您的情况下,即字符串"none"
)。
所以改变这个:
browser.loadUrl("javascript:document.getElementById('lga').style.display='none';");
为:
browser.loadUrl("javascript:document.getElementById('lga').style.display='none';void(0);");