2012-04-24 16 views
14

iOSアプリでは、私はWebViewの上に表示されていた画像のsrcディレクトリを取得するにはstringByEvaluatingJavascriptFromString(iOSの方法、Androidの同等は何ですか?)

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

を使用しました。私はAndroidでも同じことをやりたい私の選択肢は何ですか?

基本的意図は、私はこれと同じ画像を電子メールで送信することができるように...

すなわち、パスを取得することです。

など、それはFacebookを利用して、ユーザーがリンクをクリックしたときに同じ画像がロードされることを
"picture.php?image=%@",stringFromJavascript 

をこの方法で、またはポスト

+0

これは正しいトラックかもしれませんが、コードで使用するStringとして要素を取得したいと思います。http://lexandera.com/2009/01/injecting-javascript-into-a-webview/ – rjfellman

+0

URL Schemeが 'javascript'の場合、' WebView.loadURL() 'は内部的に' stringByEvaluatingJavascriptFromString() 'を内部的に使用しています。 https://github.com/android/platform_frameworks_base/blob/master/core/java/android/webkit/BrowserFrame.java#L262 – JAB

+0

Androidでこのメソッドをリフレクションで使用することができます。 http:// stackoverflowをご覧ください。 co.jp/a/17830417/2442753 –

答えて

34

ええ、私は、Androidで大幅にこの方法を欠場;)

へJavaScriptを実行し、次のようにあなたが行うことができます応答を取得:

  1. は、あなたのコード内のJavaScriptのコールバックインタフェースを定義します。

    class MyJavaScriptInterface { 
        @JavascriptInterface 
        public void someCallback(String jsResult) { 
         // your code... 
        } 
    } 
    
  2. スクリプトからwindow.HTMLOUT.someCallbackを呼び出すあなたのJavaScriptを実行して、あなたのWebViewに

    MyJavaScriptInterface javaInterface = new MyJavaScriptInterface(); 
    yourWebView.addJavascriptInterface(javaInterface, "HTMLOUT"); 
    
  3. をこのコールバックを取り付けます

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

・ホープ、このことができます!

+1

ありがとうございます!これは素晴らしいです!あまりにも悪いので、iOSの方法よりずっと面倒です!私はもう少し柔軟性があると思いますが! :) – rjfellman

+0

ありがとう、私の時間を節約します:) – Yasin

+0

あなたはアイデアをはっきりと説明したので、私は他のウェブサイトのコンセプトを理解できませんでした... – TMMDev

関連する問題