在android webview中加载部分网页

时间:2018-09-23 13:46:03

标签: javascript html class webview

我想将部分网页加载到我的webview中。我用javascript隐藏了一些div类,但问题是首先它完全加载了页面,然后隐藏了div类,我想知道是否有办法在webview内加载网页的特定部分,还是有一种方法可以先加载运行javascript,然后加载网页。 这是我用来隐藏div类的代码:

public class main extends AppCompatActivity {

    String url = "the web page url";
    WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity);

        new load_web.execute();

    }

    private class load_web extends AsyncTask < Void, Void, Void > {

        @Override
        protected void onPostExecute(Void aVoid) {
            webView = (WebView) findViewById(R.id.samsung_webView);
            webView.getSettings().setJavaScriptEnabled(true);

            webView.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageFinished(WebView view, String url) {

                    webView.loadUrl("javascript:(function() { " + "document.getElementsByClassName('header-container')[0].style.display='none'; " + "})()");

                }
            });
            webView.loadUrl(url);

        }

        @Override
        protected Void doInBackground(Void...voids) {
            return null;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

最后,经过一番挣扎,我找到了解决方案。我应该在onLoadResource中设置javascript代码,而不是在公共无效的onPageFinished中设置。正确的代码是:

私有类load_web扩展了AsyncTask {

    @Override
    protected void onPostExecute(Void aVoid) {
        webView = (WebView) findViewById(R.id.webView);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onLoadResource(WebView view, String url) {
                super.onLoadResource(view, url);

                webView.loadUrl("javascript:(function() { " + "document.getElementsByClassName('header-container')[0].style.display='none'; " + "})()");

            }