2011-07-01 9 views
2

Webviewを使用するときに、非表示のdivタグから値を取得する必要があります。私は私のwebview活動でjavascriptをオンにしていますが、 ""好きではありません。どのように私の目標を達成することができますか?アンドロイドのウェブビューから1つの変数を引き出しますか?

public class buttonOne extends Activity{ 

WebView wb = null; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.buttons); 
    wb = new WebView(this); 
    wb.getSettings().setJavaScriptEnabled(true); 
    wb.setWebViewClient(new HelloWebViewClient()); 
    wb.getSettings().setJavaScriptEnabled(true); 
    wb.loadUrl("http://ishopstark.com/mobileapp.php?category=1"); 
    setContentView(wb); 

} 

private class HelloWebViewClient extends WebViewClient { 

    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    view.loadUrl(url); 
    <script type="text/javascript"> 
    { 
     var varSendText = document.getElementById("sendtextcoupon").value; 
    } 
    </script> 

    return true; 
    } 
} 
+0

あなたはそれをエスケープする必要がありますか? \ "text/javascript \" – Blundell

答えて

8

ここに、inject Javascript into a WebViewの短い例があります。あなたが実際に値を取得し、あなたのJavaコードでそれを使用したい場合は

、あなたは、この例のようにJavascriptInterfaceを登録する必要があるとしている - extracting HTML from a WebView

+0

ok私は近いと思います。しかし、どのように関数から変数を取り出すのですか? wb.setWebViewClient(新しいWebViewClient(){ \t \t @Override \t \t公共ボイドonPageFinished(WebViewの表示、文字列のURL) \t \t { \t \tストリングvarSendText = NULL; \t \t \t \t wb.loadUrl(「ジャバスクリプト(関数(){ "+ \t \t" VAR varSendText =のdocument.getElementById( 'sendtextcoupon')値;「+ \t \t "})()" + "復帰" + "varSendText"); \t \t Toast.makeText(button2.this、varSendText、Toast.LENGTH_LONG).show(); \t \t} \t \t}); – Rick

+0

@Sabanim - 2番目の例のように、JavascriptInterfaceコールバックを登録する必要があります:クラス/メソッドを作成し、webViewでaddJavascriptInterface()を呼び出し、作成したクラスを渡し、変数をJavascriptで呼び出すwebviewClient.onPageFinished()メソッドで、上記のaddJavascriptInterface()で作成した変数を使用して、作成したメソッドを呼び出し、アクセスする変数を渡します。 – Nate

+0

私は理解に近づいていると思う。私はその例が働いている。これは私がウェブページ[browser.loadUrl( "javacript:window.HTMLOUT.showHTML( '' + document.getElementsByTagName( 'html')[0] .innerHTML + ''); );]しかし、私はそれを変更して、そのページに隠れたタグの価値を与えているように思えます。私は警告ボックスに全ページを私に渡すだけでそれを得ることができます。 "document.getElementById( 'タグのID')。value"は機能しませんか? – Rick

関連する問題