web-dev-qa-db-fra.com

IN Android webview, dois-je modifier le DOM d'une page Web?

Supposons que je charge une URL 3ème partie via webview.

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");         
    }

Est-il possible pour moi de injecter quelque chose dans ce Webview pour remplacer le logo eBay avec le mien?

37
TIMEX

Pour développer la réponse correcte de Commonsware:

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

puis dans 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]'");       
    }
}

En bref, vous attendez que la page charge. Ensuite, vous loadurl ("JavaScript: [votre JavaScript ici]").

41
Carlos Rendon

Pas directement. Vous pouvez invoquer le code JavaScript dans le contexte de la page Web actuelle, via loadUrl(), un peu comme un bookmarklet. Cependant, vous n'avez pas accès direct au DOM de Java code.

12
CommonsWare