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