onPageFinished Javascript WebView

onPageFinished Javascript WebView

本文关键字:WebView Javascript onPageFinished      更新时间:2023-09-26

我觉得问这个问题很愚蠢,但我怎么也不能让它工作。

所以我已经搜索了周围,发现了很多的帮助,指南等使用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);");