代码之家  ›  专栏  ›  技术社区  ›  Diodeus - James MacFarlane

在JavaScript块上使用HTML注释是否仍然有意义?

  •  66
  • Diodeus - James MacFarlane  · 技术社区  · 16 年前

    在过去,人们常常将HTML注释标记环绕在JavaScript块周围,以防止“老”浏览器显示脚本。甚至连lynx都足够聪明,可以忽略javascript,那么为什么有些人会继续这样做呢?这些天有什么正当理由吗?

    <script type="text/javascript">
    <!--
    //some js code
    //-->
    </script>
    

    编辑:我遇到过一种情况。在“设计视图”中,有些代码编辑器(如Dreamweaver)会被javascript字符串中引用的HTML混淆,并尝试将其显示为页面的一部分。

    5 回复  |  直到 10 年前
        1
  •  72
  •   MarkR    16 年前

    不,绝对不是。现在任何用户代理、搜索引擎蜘蛛或者其他任何东西都足够聪明,如果它不能执行它,就可以忽略javascript。

    只有很短的一段时间,这一切才有所帮助,大约在1996年。

        2
  •  20
  •   ConroyP    16 年前

    没有一个很好的理由再这样做了,因为需要这样做的浏览器已经基本上从网络上消失了。

    事实上,如果使用XHTML-From,那么这样做实际上会导致某些旧浏览器试图解释页面时出现意外问题。 developer.mozilla.org :

    • Mozilla 1.1+/歌剧7

      不要应用CSS或执行JavaScript。

    • Netscape 7.0x/Mozilla 1.0.x

      不应用css,但执行javascript。

    • Internet Explorer 5.5+

      无法显示文档。

    该站点还链接到 several problems 以上提到。

        3
  •  14
  •   Ionuț Staicu    16 年前

    不过,您应该使用CDATA…

    <script type="text/javascript" charset="utf-8">
    /* <![CDATA[ */
    
    /* ]]> */
    </script>
    

    因为如果代码中有“<”、“>”、“&”等,代码将不会验证:)

        4
  •  11
  •   Tim Büthe    16 年前

    他妈的不,没有人需要这个了,如果你需要,你还有更多的问题要关心。当你真的想支持那些需要它的浏览器时,你必须注意更多的事情。甚至没有提到缺少CSS!

    然而,更大的问题是,人们这样做是错误的。实际上你的例子是错误的,因为

    -->
    

    应该读

    //-->
    

    其次,您输入的属性也会说“text/javascript”有什么问题。它是“文本/javascript”(全部小写),但已过时(请参见 IANA List )现在应该是“application/javascript”(参见 another IANA List . 然而,JS大师道格拉斯·克罗克福德(DouglasCrockford)说,你应该把它忽略掉。

    另一个没有人提到的问题是:在HTML注释中,“--”是不允许的,这意味着不能使用“x--”将x递减一个。

        5
  •  1
  •   Andrew Hedges    16 年前

    不必使用CDATA块是我喜欢使用HTML4.01 Strict作为doctType的原因之一,但是,Staicu,我认为它使用了以下语法:

    <script charset="utf-8">
    //<![CDATA[
    
    //]]>
    </script>
    

    也许两者是等效的?有人知道一个比另一个有优势吗?