使用java隐藏Android WebView应用中的div并不起作用

时间:2015-06-05 21:31:42

标签: javascript android webview

我有一个名为downloadapp的div,我希望向访问我的移动网站的用户展示,而不是使用我的Android应用。所以我需要为已经使用我的应用程序的用户隐藏该div。

我的代码:

private void startWebView(String url) {
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {      

    //On error, open local file
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
    webView.loadUrl("file:///android_asset/www/myerrorpage.html");
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {              
        view.loadUrl(url);
    return true;
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        view.loadUrl("javascript:document.getElementById('downloadapp').style.display = 'none';");
    }   

});

webView.loadUrl(url);

}

问题:

我的应用程序首先加载div并实际显示几秒钟。突然之间,应用程序中加载的整个网页都消失了,并且一个空白页面上写着“#34; none"是唯一留在屏幕上的东西。

我试图隐藏div的方式是否有问题" downloadapp"或者我在这里失踪了什么?

我想要它做的是在显示网页之前立即隐藏div。

1 个答案:

答案 0 :(得分:2)

这种情况发生在较新版本的WebView上 - 如果您的应用定位到API级别19或更高级别(KitKat),那么如果javascript:网址返回值,则此值将被解释为新网络的内容页面打开。在您的情况下,由于'none'是作业的返回值,因此它将用作新页面的内容。

只需将void(0);放在javascript:代码的末尾,以防止它返回值。