2

我在 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 视图中遇到此错误消息: Uncaught SyntaxError: Unexpected identifier at http://XXXX.html:1

我搜索了很多网页,其中大多数都说这是由于 javascript 中的“{”和“}”不匹配造成的。但我检查了我的,发现我的 javascript 代码格式正确,如上所示。

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

我已经通过以下方式在 webview 中启用了 javascript:

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

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

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

4

2 回答 2

6

用这个

webView.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageFinished(WebView view, String url)
                {
                    webView.loadUrl("javascript:(function() { " +
                            "alert('hello') " +
                            "})()");
                }
            });
于 2013-05-08T16:04:35.857 回答
2

您的问题在于您的type属性的编写方式,有text/javascript和没有javascript/text非常重要(的顺序type必须绝对正确)

    <script type="text/javascript">
        function displayAlert()
        {
            alert("this is in function displayAlert()");
        }
    </script>
于 2012-08-23T23:42:52.503 回答