Могу ли я изменить DOM веб-страницы в Android Webview? - PullRequest
37 голосов
/ 08 февраля 2010

Предположим, я загружаю сторонний 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 своим собственным?

Ответы [ 3 ]

41 голосов
/ 16 февраля 2011

Чтобы расширить правильный ответ 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]'");       
    }
}

Короче говоря, вы ждете загрузки страницы. Затем вы загружаетеUrrl («javascript: [ваш javascript здесь]»).

12 голосов
/ 08 февраля 2010

Не напрямую. Вы можете вызывать код Javascript в контексте текущей веб-страницы через loadUrl(), как это делает букмарклет. Однако у вас нет прямого доступа к DOM из кода Java.

0 голосов
/ 08 июня 2011
WebView webview = new WebView();

//Maybe need to set to enabled javascript?
webView.getSettings().setJavaScriptEnabled(true);

webview.setWebViewClient(new WebClient());

webview.loadUrl("stackoverflow.com");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...