Uncaught ReferenceError:尝试在Android网络视图中访问时未定义函数

Uncaught ReferenceError: function is not defined when trying to access in Android webview

本文关键字:视图 访问 函数 未定义 网络 Android ReferenceError Uncaught      更新时间:2023-09-26

我在Android中使用WebView。我正在使用loadDataWithBaseURL加载以下url:

(出于安全原因,我在这里使用"XXXX"代替我的实际网页URL)

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视图中遇到以下错误消息:未捕获的语法错误:处的意外标识符http://XXXX.html:1.

我搜索了很多网页,其中大多数都说这是由于javascript中的"{"answers"}"不匹配造成的。但我检查了我的javascript代码,发现它的格式是正确的,正如您在上面看到的那样。

  1. 当我点击按钮时,javascript无法执行。错误消息:E/Web控制台(534):未捕获引用错误:displayAlert未在null处定义:1

我已经通过:在webview中启用了javascript

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

为什么javascript函数在"http://XXXX.html"无法定位执行?

你能帮帮我吗?非常感谢!

使用此

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

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

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