2012-04-24 17 views
14

En una aplicación para iOS, que utilizastringByEvaluatingJavascriptFromString (método de iOS, lo que es equivalente Android?)

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

Para obtener el directorio src de la imagen que se está visualizando en la web View. Quiero hacer lo mismo para Android. ¿Cuáles son mis opciones?

Básicamente la intención es capturar el camino para que pueda envía este mismo cuadro ...

decir.

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

De esta manera, esa misma imagen se carga cuando el usuario hace clic en el enlace, o mensajes a Facebook, etc

+0

Algo como esto puede ser el camino correcto, sin embargo, me gustaría obtener el elemento como una cadena para usar en el código http://lexandera.com/2009/01/injecting-javascript-into-a-webview/ – rjfellman

+0

La parte tonta es que 'WebView.loadURL()' aparentemente usa 'stringByEvaluatingJavascriptFromString()' internamente cuando el esquema URL es 'javascript'. https://github.com/android/platform_frameworks_base/blob/master/core/java/android/webkit/BrowserFrame.java#L262 – JAB

+0

Puede usar este método en Android a través de la reflexión, visite http: // stackoverflow. com/a/17830417/2442753 –

Respuesta

34

Sí, me olvido de este método en gran medida en Android;)

Para ejecutar JavaScript y obtener la respuesta que puede hacer de la siguiente manera:

  1. Definir interfaz de devolución de llamada de JavaScript en su código:

    class MyJavaScriptInterface { 
        @JavascriptInterface 
        public void someCallback(String jsResult) { 
         // your code... 
        } 
    } 
    
  2. Acople esta devolución de llamada a su WebView

    MyJavaScriptInterface javaInterface = new MyJavaScriptInterface(); 
    yourWebView.addJavascriptInterface(javaInterface, "HTMLOUT"); 
    
  3. ejecutar su JavaScript llamando window.HTMLOUT.someCallback del guión:

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

Espero que esto ayude!

+1

muchas gracias! esto funciona fantástico! ¡demasiado malo es mucho más tedioso que el método de iOS! ¡Aunque supongo que un poco más flexible! :) – rjfellman

+0

Muchas gracias, ahorra mi tiempo :) – Yasin

+0

+1 porque explicó la idea claramente, no pude entender el concepto de los otros sitios web ... – TMMDev

Cuestiones relacionadas