2012-04-24 54 views
14

在iOS應用程序,我用stringByEvaluatingJavascriptFromString(iOS的方法,相當於Android的是什麼?)

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

要獲得正在對web視圖顯示的圖像的src目錄。我想爲Android做同樣的事情。我有什麼選擇?

基本上意圖是捕獲的路徑,這樣我可以通過電子郵件發送這個相同的圖片...

即。

"picture.php?image=%@",stringFromJavascript 

通過這種方式,當用戶點擊該鏈接,或將其在Facebook職位,相同的圖像會被加載等

+0

像這樣的東西可能是正確的軌道,但我想要獲取元素作爲字符串在代碼中使用http://lexandera.com/2009/01/injecting-javascript-into-a-webview/ – rjfellman 2012-04-24 20:33:31

+0

愚蠢的部分是,當URL方案是'javascript'時,'WebView.loadURL()'顯然在內部使用'stringByEvaluatingJavascriptFromString()'。 https://github.com/android/platform_frameworks_base/blob/master/core/java/android/webkit/BrowserFrame.java#L262 – JAB 2013-06-20 18:28:15

+0

您可以在Android中通過反射使用此方法,請訪問 http:// stackoverflow。 com/a/17830417/2442753 – 2013-07-24 09:58:25

回答

34

是的,我在Android中大大錯過這個方法)

要執行JavaScript,並得到響應,你可以做如下:

  1. 定義JavaScript回調接口代碼:

    class MyJavaScriptInterface { 
        @JavascriptInterface 
        public void someCallback(String jsResult) { 
         // your code... 
        } 
    } 
    
  2. 附加此回調到您的WebView

    MyJavaScriptInterface javaInterface = new MyJavaScriptInterface(); 
    yourWebView.addJavascriptInterface(javaInterface, "HTMLOUT"); 
    
  3. 運行你的JavaScript調用從腳本window.HTMLOUT.someCallback

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

希望這有助於!

+1

非常感謝你!這工作太棒了!太糟糕了,它比iOS方法更乏味!雖然我想有點更靈活! :) – rjfellman 2012-04-27 20:39:57

+0

非常感謝你,它節省了我的時間:) – Yasin 2013-02-10 18:02:19

+0

+1,因爲你清楚地解釋了這個想法,我無法理解從其他網站的概念... – TMMDev 2014-06-15 12:04:58

相關問題