WebView - 使用getElementById隐藏div不会立即生效

时间:2017-04-05 09:46:52

标签: javascript android

我有Fragment WebView,我想要隐藏某些div。它有效,但这些div不会立即隐藏,可以看到 - 有时只有几分之一秒,有时甚至更长。我尝试添加setVisibility(View.INVISIBLE)onPageFinished setVisibility(View.VISIBLE)。这有点帮助,但div仍然可见。如果我点击WebView中的链接,则下一页显示div甚至更长。

以下是代码:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

public class TestFragment extends Fragment {

public WebView mWebView;
ProgressBar progressBar;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View fragmentView =inflater.inflate(R.layout.fragment_main, container, false);
    String url = "https://www.example.com";
    mWebView = (WebView) fragmentView.findViewById(R.id.webview);
    mWebView.setVisibility(View.INVISIBLE);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.setWebViewClient(new WebViewClient()
    {
        @Override
        public void onPageFinished(WebView rootView, String url)
        {
            mWebView.loadUrl("javascript:(function() { " +
                    "document.getElementById('page-header').remove(); " +
                    "document.getElementsByTagName('footer')[0].style.display=\"none\"; " +
                    "document.getElementsByTagName('ol')[0].style.display=\"none\"; " +
                    "})()");
            mWebView.setVisibility(View.VISIBLE);
        }
    });
    mWebView.loadUrl(url);
    return fragmentView;
}
}

我做错了什么?有更好的方法吗?

非常感谢帮助。如果代码很乱,请原谅我,我只是个初学者 - 谢谢!

1 个答案:

答案 0 :(得分:0)

尝试在XML文件本身中将可见性设置为INVISIBLE,而不是在Java代码中设置它。这背后的原因是您正在设置视图的膨胀,然后在此之后设置可见性,因此,视图将显示短暂时刻的时间跨度。这对我有用,也适合你。如果有帮助,请告诉我们!