Android WebView.evaluateJavascript()和未捕获的引用错误

时间:2018-08-14 06:55:39

标签: javascript android webview undefined-reference

我使用以下方式加载网页(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)

任何主意出了什么问题吗?我的印象是其他人没有这个问题。

1 个答案:

答案 0 :(得分:0)

我发现这达到了我想要的:

webview.setWebViewClient(new WebViewClient() {  
        @Override
        public void onPageFinished(WebView view, String url){
            view.loadUrl("javascript:myTest()");
        }

我想当对loadUrl()的第一次调用返回时,页面可能尚未完全加载,因此myTest()仍未定义。我对EvaluateJavascript()的目的仍然感到困惑,因为即使在这种情况下,它也不起作用。