我在添加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}}函数:)
答案 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å nettet.</p>" + "';})()";
return errorPage;
}
上述方法修改当前页面,它将显示自定义错误页面而不是默认页面。 我在 onReceivedError()上调用了这个,但你可以在 onPageStarted()中使用它并添加你的自定义javascript函数。 这只是为了让您了解如何操作当前页面。
最好的问候。