2012-04-24 35 views
14

Trong một ứng dụng iOS, tôi sử dụngstringByEvaluatingJavascriptFromString (phương pháp iOS, Android tương đương là gì?)

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

Để có được thư mục src của hình ảnh đó đã được hiển thị trên WebView. Tôi muốn làm tương tự cho Android. Những lựa chọn của tôi là gì?

Về cơ bản, ý định là chụp đường dẫn để tôi có thể gửi cùng một hình ảnh qua email này ...

ie.

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

Bằng cách này, mà cùng một hình ảnh sẽ được tải khi người dùng nhấp vào liên kết, hoặc viết nó to facebook, vv

+0

Điều gì đó như thế này có thể là đúng hướng, tuy nhiên tôi muốn lấy phần tử làm Chuỗi để sử dụng trong mã http://lexandera.com/2009/01/injecting-javascript-into-a-webview/ – rjfellman

+0

Phần ngớ ngẩn là 'WebView.loadURL()' rõ ràng sử dụng 'stringByEvaluatingJavascriptFromString()' nội bộ khi lược đồ URL là 'javascript'. https://github.com/android/platform_frameworks_base/blob/master/core/java/android/webkit/BrowserFrame.java#L262 – JAB

+0

Bạn có thể sử dụng phương pháp này trong Android thông qua phản ánh, vui lòng truy cập http: // stackoverflow. com/a/17830417/2442753 –

Trả lời

34

Yeah, tôi nhớ phương pháp này rất trong Android;)

Để thực thi JavaScript và nhận được trả lời, bạn có thể làm như sau:

  1. Xác định giao diện callback JavaScript trong mã của bạn:

    class MyJavaScriptInterface { 
        @JavascriptInterface 
        public void someCallback(String jsResult) { 
         // your code... 
        } 
    } 
    
  2. Đính kèm callback này để WebView bạn

    MyJavaScriptInterface javaInterface = new MyJavaScriptInterface(); 
    yourWebView.addJavascriptInterface(javaInterface, "HTMLOUT"); 
    
  3. Chạy gọi JavaScript window.HTMLOUT.someCallback từ kịch bản:

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

Hope this helps!

+1

cảm ơn bạn rất nhiều! điều này hoạt động tuyệt vời! quá tệ hơn nhiều so với phương pháp iOS! Mặc dù tôi cho rằng một chút linh hoạt hơn! :) – rjfellman

+0

Cảm ơn bạn rất nhiều, nó giúp tiết kiệm thời gian của tôi :) – Yasin

+0

+1 bởi vì bạn đã giải thích ý tưởng rõ ràng, tôi không thể hiểu được khái niệm từ các trang web khác ... – TMMDev

Các vấn đề liên quan