web-dev-qa-db-ja.com

Android Webviewでは、WebページのDOMを変更できますか?

Webviewを介してサードパーティのURLをロードするとします。

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        webview = (WebView) findViewById(R.id.webview);
        webview.setWebViewClient(new HelloWebViewClient());
        webview.getSettings().setJavaScriptEnabled(true);
        webview.setWebChromeClient(new MyWebChromeClient());
        webview.loadUrl("http://ebay.com");         
    }

このWebViewに何かを挿入するを使用して、ebayのロゴを自分のものに置き換えることはできますか?

37
TIMEX

CommonsWareの正解をさらに詳しく説明します。

WebView webview = new WebView();
webview.setWebViewClient(new WebClient());
webView.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("stackoverflow.com");

次にWebClientで:

public class WebClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }

    @Override
    public void onPageFinished(WebView view, String url) 
    {       
        // Obvious next step is: document.forms[0].submit()
        view.loadUrl("javascript:document.forms[0].q.value='[Android]'");       
    }
}

簡単に言えば、ページがロードされるのを待ちます。次に、loadUrl( "javascript:[your javascript here]")を実行します。

41
Carlos Rendon

直接ではありません。ブックマークレットと同じように、現在のWebページのコンテキストでloadUrl()を介してJavaScriptコードを呼び出すことができます。ただし、JavaコードからDOMに直接アクセスすることはできません。

12
CommonsWare