如何从 XWalkView 获取 html 内容?

Posted

技术标签:

【中文标题】如何从 XWalkView 获取 html 内容?【英文标题】:How to get html content from XWalkView? 【发布时间】:2016-06-21 01:09:08 【问题描述】:

我已经尝试过在 WebView 中使用 javascriptInterface。但它不起作用。如何从 XWalkView 获取 html 内容?

这样我就可以从 WebView 获取 HTML:

    public class MainActivity extends AppCompatActivity 

    WebView myWebView;

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

        myWebView = (WebView) findViewById(R.id.webView);
        WebSettings webSettings = myWebView.getSettings();

        webSettings.setJavaScriptEnabled(true);

        myWebView.loadUrl("http://joerichard.net/api/test/generate.htm");
        myWebView.getSettings().setJavaScriptEnabled(true);
        myWebView.addJavascriptInterface(new MyJavaScriptInterface(this), "HtmlViewer");

        myWebView.setWebViewClient(new WebViewClient() 
            @Override
            public void onPageFinished(WebView view, String url) 
                if(url.endsWith("generate.htm"))
                    myWebView.loadUrl("javascript:window.HtmlViewer.showHTML" +
                            "('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
                
            
        );

    

    class MyJavaScriptInterface 

        private Context ctx;

        MyJavaScriptInterface(Context ctx) 
            this.ctx = ctx;
        

        public void showHTML(String html) 
            Document doc = Jsoup.parse(html);
        

    


我对 XWalkView 进行了同样的尝试,但没有成功。如何从 XWalkView 获取 HTML 源代码?

【问题讨论】:

您能否提供有关您的问题的更多信息?你想在js中调用java函数吗? 【参考方案1】:

添加 JavaScript 接口:

 webview.addJavascriptInterface(new test(this),"bla");

设置客户端

  webview.setResourceClient(new XWalkResourceClient(webview) 

                @Override
                public void onProgressChanged(XWalkView view, int progressInPercent) 
                    super.onProgressChanged(view, progressInPercent);
                    pbLoading.setProgress(progressInPercent);
                

                @Override
                public void onLoadFinished(XWalkView view, String url) 
                    super.onLoadFinished(view, url);
                    webview.load("javascript:window.bla.showHTML" +
                            "('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');"
                            ,null);
                
            );

实现html函数

class test
        private Context ctx;

        test(Context ctx) 
            this.ctx = ctx;
        
         @JavascriptInterface
        public void showHTML(String html) 
            new AlertDialog.Builder(ctx).setTitle("HTML").setMessage(html)
                    .setPositiveButton(android.R.string.ok, null).setCancelable(false).create().show();
        

    

【讨论】:

救命稻草!!谢谢你。希望我能接受你的回答,因为海报显然已经放弃了。

以上是关于如何从 XWalkView 获取 html 内容?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Crosswalk 长按获取 URL?

如何从 HttpServletResponse 获取 HTML 内容?

如何使用 PHP 从 HTML 表中获取当前内容

如何从网页中获取此特定内容? [复制]

如何使用 jquery 从 iframe 获取内容? [复制]

如何在flutter中获取html内容表单flutterWebViewPlugin(webview)