我觉得问这个问题很愚蠢,但我怎么也不能让它工作。
所以我已经搜索了周围,发现了很多的帮助,指南等使用onPageFinished函数在WebViewClient和我的代码很大程度上是基于这些。
基本上我有一个函数,应该加载一个网页,然后隐藏某些元素的页面上的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 bannerdiv的id。
-browser和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);");