В Android Webview я могу изменить веб-страницу DOM?
Предположим, что я загружаю сторонний URL через 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");
}
Возможно ли, чтобы я вложил что-то в этот WebView, чтобы заменить логотип ebay на свой собственный?
Ответы
Ответ 1
Чтобы добавить правильный ответ 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]'");
}
}
В двух словах вы ждете загрузки страницы. Затем вы загружаетеUrl ( "javascript: [ваш javascript здесь]" ).
Ответ 2
Не напрямую. Вы можете вызвать Javascript-код в контексте текущей веб-страницы, через loadUrl()
, как это делает букмарклет. Однако у вас нет прямого доступа к DOM из кода Java.
Ответ 3
WebView webview = new WebView();
//Maybe need to set to enabled javascript?
webView.getSettings().setJavaScriptEnabled(true);
webview.setWebViewClient(new WebClient());
webview.loadUrl("stackoverflow.com");