onPageFinished Javascript WebView

时间:2015-08-18 15:34:39

标签: javascript android webview

我觉得不得不提出这个问题我觉得非常愚蠢,但我不能让我的生活得到它。

因此我在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工作,我将添加其他功能,将根据需要改变它们。

1 个答案:

答案 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);");