3

我正在使用 XHTML Strict 标记创建一个站点。在 html 里面我需要放一个 js 脚本:

<script type="text/javascript">

$(document).ready(function () { $('#nav li#nav-strona-glowna').append('<a href="/platinium/" class="hover active"><span>Strona glowna</span></a>');

</script>   

不幸的是,xhtml 不再有效,因为这个脚本中有一个“”标签。如何在不删除 xhtml 的情况下验证它?

4

6 回答 6

6

你想要一个 CDATA 标签。从该 MDC 页面窃取的示例:

<script type="text/javascript">
 //<![CDATA[
  var i = 0;

  while  (++i < 10)
  {
    // ...
  }
 //]]>
</script>

一般来说,最好通过将 JS(和 CSS)放在外部文件中来避免这个问题。

于 2011-01-26T15:11:34.653 回答
3

尝试:

<script type="text/javascript">
  <![CDATA[
      $(document).ready(function () { $('#nav li#nav-strona-glowna').append('<a href="/platinium/" class="hover active"><span>Strona glowna</span></a>');
  ]]>
</script>
于 2011-01-26T15:11:53.087 回答
1

CDATA 包装器

 <script>
 //<![CDATA[

 // js goes here - bypasses browser HTML parser

 //]]>
 </script>

我建议您找到不直接涉及在 JavaScript 中编写 HTML 标记的方式在页面中注入 HTML。如果您将内容、展示和行为分开,您与网页设计师的关系将会更加牢固、合作和富有成效。

但是对于那些不可能的情况,CDATA 包装器将阻止浏览器将您的 JavaScript 解析为 HTML。

请记住,他们称之为 HTML Strict 是有原因的。

于 2011-01-26T15:12:07.190 回答
1

更新

您的代码中存在问题,即缺少右大括号和括号。可能是笔误?

关于 XHTML 验证,最好的选择是将 JavaScript 放在一个单独的文件中。如果做不到这一点,请在脚本周围添加一个 CDATA 部分:

<script type="text/javascript">
//<![CDATA[
    $(document).ready(function () { $('#nav li#nav-strona-glowna').append('<a href="/platinium/" class="hover active"><span>Strona glowna</span></a>'); });
//]]>
</script>

请注意,JavaScript 注释适用于不将 XHTML 解析为 XML 的浏览器,例如 IE。请参阅https://developer.mozilla.org/en/properly_using_css_and_javascript_in_xhtml_documents

于 2011-01-26T15:12:13.203 回答
1
<script type="text/javascript"><![CDATA[
// your code
]]></script>

应该解决你的问题

于 2011-01-26T15:12:13.837 回答
1

验证器到底给了你什么错误?您发布的代码看起来非常有效。

顺便提一句。如果您出于某些特定原因不需要 XHTML,

( http://xhtml.com/en/xhtml/serving-xhtml-as-xml/ )

仅使用 HTML4 或 HTML5 可能会更好,您也可以使用它们制作有效的代码。

于 2011-01-26T15:16:57.577 回答