2012-04-24 1 views
14

В приложении IOS, я использовалstringByEvaluatingJavascriptFromString (метод IOS, что Android эквивалент?)

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

Чтобы получить каталог Src изображения, которое отображается на WebView. Я хочу сделать то же самое для Android. Какие у меня варианты?

В основном цель заключается захватить путь, так что я могу отправить эту же картину ...

т.е..

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

Таким образом, тот же образ будет загружен, когда пользователь нажимает на ссылку, или сообщения ему facebook и т.д.

+0

Что-то вроде этого может быть правильным путем, однако я хотел бы получить элемент как строку для использования в коде http://lexandera.com/2009/01/injecting-javascript-into-a-webview/ – rjfellman

+0

Глупая часть заключается в том, что 'WebView.loadURL()' явно использует 'stringByEvaluatingJavascriptFromString()' внутренне, когда схема URL является 'javascript'. https://github.com/android/platform_frameworks_base/blob/master/core/java/android/webkit/BrowserFrame.java#L262 – JAB

+0

Вы можете использовать этот метод в Android через отражение, пожалуйста, посетите http: // stackoverflow. com/a/17830417/2442753 –

ответ

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

+0

Большое спасибо, это экономит мое время :) – Yasin

+0

+1, потому что вы ясно объяснили идею, я не мог понять концепцию с других сайтов ... – TMMDev

Смежные вопросы