How to retrieve HTML content from WebView (as a string)

前端 未结 6 2151
旧巷少年郎
旧巷少年郎 2020-11-30 00:55

How do I retrieve all HTML content currently displayed in a WebView?

I found WebView.loadData() but I couldn\'t find the opposite equivalent (e.g. WebVi

6条回答
  •  伪装坚强ぢ
    2020-11-30 01:20

    You can achieve this through:

    final Context myApp = this;
    
    /* An instance of this class will be registered as a JavaScript interface */
    class MyJavaScriptInterface
    {
        @SuppressWarnings("unused")
        public void processHTML(String html)
        {
            // process the html as needed by the app
        }
    }
    
    final WebView browser = (WebView)findViewById(R.id.browser);
    /* JavaScript must be enabled if you want it to work, obviously */
    browser.getSettings().setJavaScriptEnabled(true);
    
    /* Register a new JavaScript interface called HTMLOUT */
    browser.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");
    
    /* WebViewClient must be set BEFORE calling loadUrl! */
    browser.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url)
        {
            /* This call inject JavaScript into the page which just finished loading. */
            browser.loadUrl("javascript:window.HTMLOUT.processHTML(''+document.getElementsByTagName('html')[0].innerHTML+'');");
        }
    });
    
    /* load a web page */
    browser.loadUrl("http://lexandera.com/files/jsexamples/gethtml.html");
    

    You will get the whole Html contnet in processHTML method. and it wont make another request for webpage. so it is also more efficient way for doing this.

    Thanks.

提交回复
热议问题