首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从XWalkView获取html内容?

如何从XWalkView获取html内容?
EN

Stack Overflow用户
提问于 2016-03-07 21:03:18
回答 1查看 724关注 0票数 11

我已经尝试过使用JavaScriptInterface在WebView中这样做。但它不起作用。如何从XWalkView获取超文本标记语言内容?

通过这种方式,我可以从WebView获得超文本标记语言:

代码语言:javascript
复制
    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获取超文本标记语言源代码?

EN

回答 1

Stack Overflow用户

发布于 2016-08-27 20:14:24

添加JavaScript接口:

代码语言:javascript
复制
 webview.addJavascriptInterface(new test(this),"bla");

设置客户端

代码语言:javascript
复制
  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功能

代码语言:javascript
复制
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();
        }

    }
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35844498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档