我使用以下方式加载网页(main.html)
webview.loadUrl("file::///android_asset/main.html");
main.html:
<!DOCTYPE html>
<script>
function myTest() {
document.getElementById("myH").innerHTML = "myTest() worked"
}
</script>
<html>
<head><title>This is a test</title></head>
<body>
<h1 id="myH">This site is under development</h1>
<script>
//myTest(); this works but I need to run it programatically after page load
</script>
</body>
</html>
在main.html中,已经定义了一个函数myTest(),我可以使用main.html中的脚本块来调用它:
<script> myTest(); </script>
但是,当我尝试使用EvaluationJavascript()运行它时:
webview.evaluateJavascript("myTest()", null);
我收到错误消息:
I /铬:[INFO:CONSOLE(1)]“未捕获的ReferenceError:未定义myTest”,来源:(1)
任何主意出了什么问题吗?我的印象是其他人没有这个问题。
答案 0 :(得分:0)
我发现这达到了我想要的:
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url){
view.loadUrl("javascript:myTest()");
}
我想当对loadUrl()的第一次调用返回时,页面可能尚未完全加载,因此myTest()仍未定义。我对EvaluateJavascript()的目的仍然感到困惑,因为即使在这种情况下,它也不起作用。