Javascript Android,在我的应用程序中获取html内容
我需要得到一个html页面的一些属性,它被加载到一个webview中。 类似于此处的内容: 所以我有一个JavaScriptInterface: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);
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之后,我得到了这些东西。但我还是不明白为什么。。。