stringByEvaluatingJavascriptFromString(iOS方法,安卓的等效方法是什么?)

15

我在一个iOS应用中使用了

stringFromJavaScript = [webView stringByEvaluatingJavascriptFromString:@"document.getElementById(\"image\").getAttribute(\"src")"];

我想要获取在webView上显示的图片的src目录。我想要在Android上实现同样的功能,有哪些选项可供选择?

基本上这个意图是为了捕获路径,以便我可以通过电子邮件发送相同的图片...

即:

"picture.php?image=%@",stringFromJavascript
这样,当用户点击链接或在Facebook上发布时,同一张图片将被加载。

这样做可能是正确的轨迹,但我想将该元素作为字符串获取以在代码中使用。http://lexandera.com/2009/01/injecting-javascript-into-a-webview/ - rjfellman
荒谬的是,当URL方案为“javascript”时,WebView.loadURL()明显会在内部使用stringByEvaluatingJavascriptFromString()。 https://github.com/android/platform_frameworks_base/blob/master/core/java/android/webkit/BrowserFrame.java#L262 - JAB
您可以通过反射在Android中使用此方法,请访问https://dev59.com/J1jUa4cB1Zd3GeqPSY_b#17830417。 - Jonny Chen
1个回答

38

是的,我非常想在Android中使用这个方法 ;)

要执行JavaScript并获取响应,您可以按以下步骤操作:

  1. 在您的代码中定义JavaScript回调接口:

  2. class MyJavaScriptInterface {
        @JavascriptInterface
        public void someCallback(String jsResult) {
             // your code...
        }
    }
    
  3. 将此回调函数附加到您的 WebView 上

  4. MyJavaScriptInterface javaInterface = new MyJavaScriptInterface();
    yourWebView.addJavascriptInterface(javaInterface, "HTMLOUT");
    
  5. 从脚本中运行调用window.HTMLOUT.someCallback的JavaScript:

  6. yourWebView.loadUrl("javascript:( function () { var resultSrc = document.getElementById(\"image\").getAttribute(\"src\"); window.HTMLOUT.someCallback(resultSrc); } ) ()");
    

希望这能帮到你!


1
非常感谢!这个工作太棒了!只可惜它比iOS方法更繁琐!虽然我想它更加灵活! :) - rjfellman
+1 是因为你把这个想法解释得很清楚,我在其他网站上无法理解这个概念... - TMMDev
2
嗨,我遇到了未捕获的类型错误,请检查一下这个错误。[INFO:CONSOLE(1)] "Uncaught TypeError: Cannot call method 'someCallback' of undefined", source: (1) - Ravikumar11

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接