2

w3c 验证器服务抱怨以下 html 无效。它不喜欢我的 javascript 中的 & 符号。但是在 javascript 字符串中允许使用 & 符号,不是吗?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Page Title</title>
    </head>
    <body>
        <script type="text/javascript">


           function search(query) {
             redir = "http://search.mysite.com/search?s=FIN&ref=&q=" + query;
             window.location.href = redir
             return false;
            }
        </script>

        <span>This is all valid HTML</span>

    </body>
</html>
4

3 回答 3

3

所有浏览器都会采用这个,但要使其有效 X(HT)ML,您需要将 Javascript 代码放在 CDATA 块中。

于 2010-06-17T13:01:17.977 回答
2

即使在 javascript w3c 验证器中也不喜欢 & 符号。尝试从验证器评论您的 javascript

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Page Title</title>
    </head>
    <body>
        <script type="text/javascript">
        //<![CDATA[//><!--
           function search(query) {
             redir = "http://search.mysite.com/search?s=FIN&ref=&q=" + query;
             window.location.href = redir
             return false;
            }
        //--><!]]>
        </script>

        <span>This is all valid HTML</span>

    </body>
</html>
于 2010-06-17T13:02:06.480 回答
1

不,它确实是无效的。如果要在 XHTML 文件中使用内联 JavaScript,则需要将 JavaScript 包装在CDATA中。如果你不想这样做,那么你就会被编码 &、< 和 > 困住,这在 JavaScript 中可能会很痛苦。

于 2010-06-17T13:02:19.000 回答