首页 > 解决方案 > 在android 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;
        }
    }
}

标签: javascripthtmlclasswebview

解决方案


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

私有类 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'; " + "})()");

            }

推荐阅读