【问题标题】:XHTML Strict is not valid because of html tags inside Javascript由于 Javascript 中的 html 标签,XHTML Strict 无效
【发布时间】:2011-06-15 22:02:45
【问题描述】:

我正在使用 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 的情况下验证它?

【问题讨论】:

    标签: javascript xhtml tags validation strict


    【解决方案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 cmets 用于不将 XHTML 解析为 XML 的浏览器,例如 IE。见https://developer.mozilla.org/en/properly_using_css_and_javascript_in_xhtml_documents

    【讨论】:

    • 这是正确的,这正是我总是喜欢纯 HTML 的原因。
    • 问题是我已经尝试了所有这些解决方案,但这些都不起作用,问题仍然存在,我不能将 js 放在单独的文件中,因为它的内容是由 php 生成的
    • @David:问题到底出在哪里?你用什么来验证你的 XHTML?
    【解决方案2】:

    CDATA Wrapper

     <script>
     //<![CDATA[
    
     // js goes here - bypasses browser HTML parser
    
     //]]>
     </script>
    

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

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

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

    【讨论】:

      【解决方案3】:

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

      顺便说一句。如果你因为某些特定的原因不需要 XHTML,

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

      你可能最好只使用 HTML4 或 HTML5,你也可以使用它们来制作有效的代码。

      【讨论】:

      • 好吧,我在本地服务器上有这个站点,所以我不能放链接,无论如何我使用一个 ff 插件来验证必须有错误的代码,因为我把所有源代码都放到了 @987654322 @ 并且它像魅力一样验证:Dthanx 的答案
      【解决方案4】:
      <script type="text/javascript"><![CDATA[
      // your code
      ]]></script>
      

      应该解决你的问题

      【讨论】:

        【解决方案5】:

        试试:

        <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>
        

        【讨论】:

          【解决方案6】:

          You want a CDATA tag. 从该 MDC 页面窃取的示例:

          <script type="text/javascript">
           //<![CDATA[
            var i = 0;
          
            while  (++i < 10)
            {
              // ...
            }
           //]]>
          </script>
          

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

          【讨论】:

            猜你喜欢
            • 2011-10-23
            • 1970-01-01
            • 2017-10-29
            • 2023-03-02
            • 1970-01-01
            • 2011-01-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多