在Android Webview中,我可以修改网页的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中注入一些东西来replace我自己的ebay标志吗?

为了扩大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:[你的javascript在这里]”)。

不直接。 您可以通过loadUrl()在当前网页的上下文中调用Javascript代码,就像书签一样。 但是,您不能从Java代码直接访问DOM。

 WebView webview = new WebView(); //Maybe need to set to enabled javascript? webView.getSettings().setJavaScriptEnabled(true); webview.setWebViewClient(new WebClient()); webview.loadUrl("stackoverflow.com");