我把这个html内容存储在strings.xml中

<string name="html">
            <![CDATA[
            <html>
                <head>
                    <style>
                        *{
                            margin: 0 0 0 0;
                            padding: 0 0 0 0;
                        }
                        body{
                            background: #000;
                            color: #FFF;
                        }
                        #content {
                            text-align: justify;
                        }
                    </style>
                    <script type="text/javascript">
                    window.onload = function(){

                            document.getElementById("content").innerHTML = "Changed";
                        }
                    </script>
                    </head>
                <body>
                    <div id="content">
                        <p>Hello</p>
                    </div>
                </body>
            </html>
            ]]></string>

这应该会将id内容为“changed”的div更改为“changed”,如果您在浏览器中尝试,它可以正常工作。问题是,即使我们启用了setjavascriptenabled(true),它也不能在webview中工作。
以下是我的活动:
...
WebView view = (WebView) findViewById(R.id.web_webView1);
        WebSettings settings = view.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setPluginsEnabled(true);
        settings.setDomStorageEnabled(true);

  view.loadData(getString(R.string.html), "text/html", "utf-8");
...

我不知道它为什么不工作?有线索吗?:)

最佳答案

我对html也有类似的问题,它的内联javascript无法在通过WebView加载的loadData中工作,控制台错误一直说:

SyntaxError: Unexpected Identifier

结果发现问题在于我的内联javascript语法太松散,必须严格使用行尾标记,;
例如,这是坏的:
<html>
    <script>
        function foo() {
            var x = 'sd'
        }
    </script>
</html>

在这种情况下:
<html>
    <script>
        function foo() {
            var x = 'sd';
        };
    </script>
</html>

注意添加了两个分号,这两个分号都是修复语法错误所必需的。

09-25 21:52