未捕获的ReferenceError:尝试在Android webview中访问时未定义函数

时间:2012-08-22 06:14:34

标签: javascript android webview

我在Android中使用WebView。我使用loadDataWithBaseURL加载以下网址:

(出于安全原因,我使用“XXXX”替换我的实际网页网址)

wb.loadDataWithBaseURL(“http://XXXX.html”,formattedHTML,“text / html”,“UTF-8”,null);

formattedHTML的内容包含由我的服务类填充的实际html源代码。

http://XXXX.html的完整源代码如下:

<html>
    <head>

        <script language="javascript">
            function displayAlert()
            {
                alert("this is in function displayAlert()");
            }
        </script>
    </head>
    <body onload="displayAlert();">dummy
    </body>
</html>

我有一个按钮。单击它时,我想执行javascript函数“displayAlert”:wb.loadUrl(“javascript:displayAlert()”);

我的问题:

  1. 我在logCat视图中遇到此错误消息:Uncaught SyntaxError:http://XXXX.html:1处的意外标识符。
  2. 我搜索了很多网页,其中大多数人说这是由javascript中的“{”和“}”不匹配引起的。但我检查了我的,发现我的javascript代码格式正确,如上所示。

    1. 当我点击按钮时,javascript无法执行。错误消息:E / Web控制台(534):未捕获的ReferenceError:displayAlert未定义为null:1。
    2. 我已经通过以下方式在网络视图中启用了javascript:

      WebSettings webSettings = wb.getSettings();
      webSettings.setJavaScriptEnabled(true);
      

      为什么无法找到“http://XXXX.html”中实现的javascript函数执行?

      请你帮助我吗?非常感谢!

2 个答案:

答案 0 :(得分:5)

使用此

webView.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageFinished(WebView view, String url)
                {
                    webView.loadUrl("javascript:(function() { " +
                            "alert('hello') " +
                            "})()");
                }
            });

答案 1 :(得分:1)

您的问题与type属性的编写方式有关,text/javascript而非javascript/text非常重要(type的排序必须绝对正确)

    <script type="text/javascript">
        function displayAlert()
        {
            alert("this is in function displayAlert()");
        }
    </script>