39

假设我通过 webview 加载第 3 方 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 徽标吗?

4

3 回答 3

44

要扩展 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:[your javascript here]").

于 2011-02-15T23:45:55.423 回答
13

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

于 2010-02-08T03:01:41.000 回答
-21
WebView webview = new WebView();

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

webview.setWebViewClient(new WebClient());

webview.loadUrl("stackoverflow.com");
于 2011-06-08T10:22:12.430 回答