在开始时将JS插入Android Webview

时间:2014-05-26 09:24:16

标签: android android-webview

我在添加Javscript BEFORE页面开始加载时遇到问题。我试着做这样的事情:

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
    super.onPageStarted(view, url, favicon);
    browser.loadUrl("javascript:alert(window.prepended = 'abc - "+url+"');");
}

或者:

@Override
public void onLoadResource(WebView view, String url) {
    super.onLoadResource(view, url);
    browser.loadUrl("javascript:alert(window.prepended = 'abc - "+url+"');");
}

但是在第一次(当我点击Reload)之后我在JS中获得undefined

<script type="text/javascript">
alert(window.prepended);
setTimeout("alert('Timeout: '+window.prepended)", 2000);
</script>
<a href="?">Reload</a>

编辑:

最后我使用了来自onProgressChanged的{​​{1}}函数:)

1 个答案:

答案 0 :(得分:0)

onPageStarted()方法中尝试这样的事情:

/*
* This call injects JavaScript into the page replacing the page
* content
*/
webView.loadUrl(injectJavaScriptIntoErrorPage());

/**
* Method used to inject custom JavaScript code into HTML page.
* 
* @return String of JavaScript function Called in onReceivedError method
*         for myWebClient
*/
protected String injectJavaScriptIntoErrorPage() {
    String errorPage = "javascript:(function() { "
        + "document.getElementsByTagName('style')[0].innerHTML = ' "
        + " body { margin:auto;width:500px;text-align:center; }"
        + " p { font-size:20px; }'; "
        + "document.getElementsByTagName('body')[0].innerHTML = ' "
        + "  <img src=\"file:///android_asset/custom_error.png\"/>"
        + "  <p>Venter p&#229; nettet.</p>" + "';})()";
    return errorPage;
}

上述方法修改当前页面,它将显示自定义错误页面而不是默认页面。 我在 onReceivedError()上调用了这个,但你可以在 onPageStarted()中使用它并添加你的自定义javascript函数。 这只是为了让您了解如何操作当前页面。

最好的问候。