我需要获取在 webview 中加载的 html 页面的一些属性。类似于这里的东西:stringByEvaluatingJavascriptFromString(iOS 方法,什么是 Android 等价物?)
所以我有一个 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 部分,但我仍然无法弄清楚可能是什么问题。