【问题标题】:Android, getting html content in my appAndroid,在我的应用程序中获取 html 内容
【发布时间】:2013-05-28 12:15:40
【问题描述】:

我需要获取在 webview 中加载的 html 页面的一些属性。 类似于这里的东西:stringByEvaluatingJavascriptFromString (iOS method, what is Android equivalent?)

所以我有一个 JavaScriptInterface:

class MyJavaScriptInterface {
    @android.webkit.JavascriptInterface
    public void jsCallback(String jsResult) {
        // your code...
        Log.d("Debug", jsResult);
    }
}

ant 那么这里是我用来获取我需要的字符串的 JS:

webView.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");
    webView.loadUrl("javascript:( "
            + "function () { "
            + "var htmltag = document.getElementsByTagName(\"html\");"
            + "var dataStr = htmltag[0].getAttribute(\"some-data-property-i-need\"); "
            + "console.log(window.HTMLOUT);"
            + "window.HTMLOUT.jsCallback(dataStr); } ) ()");

现在在控制台中我看到了这些痕迹:

06-02 01:14:06.409: V/CallNative fired:(26789): objc://domReady
06-02 01:14:06.464: I/Web Console(26789): undefined at null:1
06-02 01:14:06.480: E/Web Console(26789): Uncaught TypeError: Cannot call method 'jsCallback' of undefined at null:1

我不知道为什么“window.HTMLOUT”是未定义的。 请注意,它在某个时间点工作,然后我修改了一些 JS 部分,但我仍然无法弄清楚可能是什么问题。

【问题讨论】:

    标签: javascript android html webview


    【解决方案1】:

    整个页面加载完成后可以执行JS代码,试试这个方法:

    webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            // Call JS code here
        }
    });
    webView.loadDataWithBaseURL(null, "<html></html>", "text/html", "UTF-8", "");
    

    如果以前的方法不起作用,请尝试HTMLOUT.jsCallback(dataStr) 而不是window.HTMLOUT.jsCallback(dataStr)

    【讨论】:

    • 我试过...同样的问题...有点不同:06-02 01:45:01.847: E/Web Console(325): Uncaught ReferenceError: HTMLOUT is not defined at null: 1
    • @Ciprian 我已经修改了我的答案。
    • 嗨,很抱歉回复晚了,我试过了,还是一样,我无法让它工作。但我注意到,如果我这样调用: webView.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT"); webView.loadUrl("javascript:(" + "function () { })()");在我想要的页面的 loadUrl 之后,我得到了这些东西。但我还是不明白为什么……
    猜你喜欢
    • 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
    相关资源
    最近更新 更多