Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Android,在我的应用程序中获取html内容_Javascript_Android_Html_Webview - Fatal编程技术网

Javascript Android,在我的应用程序中获取html内容

Javascript Android,在我的应用程序中获取html内容,javascript,android,html,webview,Javascript,Android,Html,Webview,我需要得到一个html页面的一些属性,它被加载到一个webview中。 类似于此处的内容: 所以我有一个JavaScriptInterface: class MyJavaScriptInterface { @android.webkit.JavascriptInterface public void jsCallback(String jsResult) { // your code... Log.d("Debug", jsResult);

我需要得到一个html页面的一些属性,它被加载到一个webview中。 类似于此处的内容:

所以我有一个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部分进行了一些修改,但我仍然无法找出问题所在。

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", "");
webView.setWebViewClient(新的WebViewClient(){
@凌驾
公共void onPageFinished(WebView视图,字符串url){
super.onPageFinished(视图、url);
//在这里调用JS代码
}
});
loadDataWithBaseURL(null,“,”文本/html“,”UTF-8“,”);

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

我尝试过。。。同样的问题。。。有点不同:06-02 01:45:01.847:E/Web控制台(325):未捕获引用错误:HTMLOUT未定义为null:1@Ciprian我已经修改了我的答案。嗨,很抱歉回复太晚,我试过了,结果还是一样,我无法让它工作。但我注意到,如果我这样调用:webView.addJavascriptInterface(新的MyJavaScriptInterface(),“HTMLOUT”);loadUrl(“javascript:(“+”函数(){})(”);在我想要的页面的loadUrl之后,我得到了这些东西。但我还是不明白为什么。。。