Android - after loading URL with webview can i cha

2019-05-08 19:45发布

问题:

I have a webview and im loading an external HTML form a site. I try to change the background color using javascript function:

    function changeBGC(color){
document.bgColor = color;
}

and that does not work. but if i load locally then im able to change the background color. Is there some kind of security inhibiting me from changing a web page i load into the webview externally ?

回答1:

You can run javascript using the WebViewClient, example here.

The javascript code that changes the background color of a document.

So to put it all together:

When initing WebView:

WebView webview = new WebView();
webview.setWebViewClient(new WebClient());
webView.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("stackoverflow.com");

Your web view client:

public class WebClient extends WebViewClient {

    int color;

    public WebClient(int color) {
        this.color = color;
    }
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }

    @Override
    public void onPageFinished(WebView view, String url) 
    {
        String command = "javascript:document.body.style.background = " + color + ";";
        view.loadUrl(command);       
    }
}