【问题标题】:how to get webview content android after loadurlloadurl后如何获取webview内容android
【发布时间】:2012-06-06 07:00:08
【问题描述】:

这是我的代码。

我只想在加载 URL 后从 Webview 中获取页面内容。

在 Android 上,我有一个显示页面的 WebView。

如何在不再次请求页面的情况下获取页面源?

在Android 3.0中似乎WebView应该有某种WebResourceResponse()方法,但不知道怎么用。

 public class WebActivity extends Activity {
WebView mWebView;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mWebView = (WebView) findViewById(R.id.webView);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.loadUrl("https://xyz.com");
    mWebView.setWebViewClient(new HelloWebViewClient());



 }



       private class HelloWebViewClient extends WebViewClient  {

      public WebResourceResponse shouldInterceptRequest (WebView view, String url)
      {
        return null;


      }

      @Override
        public void onPageFinished(WebView view, String url)
        {
           /* This call inject JavaScript into the page which just finished loading. */
           mWebView.loadUrl("javascript:window.HTMLOUT.processHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");

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


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
        mWebView.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}}

【问题讨论】:

    标签: webview android-webview


    【解决方案1】:

    我知道这是旧的,但对于未来的访问者,以下应该可以工作。

    首先需要定义一个接口如:

    final class LoadingInterface {
        @JavascriptInterface 
        public void outputHTML(final String html){
            //do what ever you want with html
        }
    }
    

    然后在您的 WebView 通话中
    webView.addJavascriptInterface(new LoadingInterface(), "INTERFACE");

    onPageFinished 输入:

    String js = "javascript:"
            +"var html = document.getElementsByTagName('html')[0].innerHTML;"
            +"window.INTERFACE.outputSchedule(html);";
            webView.loadUrl(js);
    

    如果您只需要页面的一部分,您可以将getElementsByTagName('html')[0] 替换为getElementById('partOfPage') 之类的东西

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多