【问题标题】:Multiple inline comments for htmlhtml的多个内联注释
【发布时间】:2012-10-20 03:19:54
【问题描述】:

我正在尝试评论以下 html,以便它不应该转到超链接。

<a href="<!--http://www.google.com=-->" target="_blank" onclick="javascript:alert('Navigation Prevented')">CLICK HERE FOR GOOGLE</a>

我无法评论 target="_blank"。如果我这样做它不起作用,它也会在页面上显示 javascript。

如何让页面显示警报以及停止在新标签中打开页面。我想取消target="_blank"的效果。

我们不能为 html 内联多个 cmets。

【问题讨论】:

    标签: javascript html css comments


    【解决方案1】:

    元素的属性值中不能有注释标签。

    您可以通过添加return false; 来执行此操作,而不是评论。这会阻止浏览器跟踪链接:

    <a href="http://www.google.com" target="_blank"
       onclick="javascript:alert('Navigation Prevented'); return false;">CLICK HERE FOR GOOGLE</a>
    

    小提琴:http://jsfiddle.net/rBmjs/

    【讨论】:

      【解决方案2】:
      <a href="google.com" target="_blank" onclick="javascript:alert('Navigation Prevented');return false;">CLICK HERE FOR GOOGLE</a>
      

      其中重要的部分是onclick 属性上的return false;。这指示浏览器在单击后立即取消此链接。所以会发生的是 javascript 将被执行,但链接将被跟踪。

      【讨论】:

      • 你能补充一句解释你做了什么吗?我不知道如果你给 Mike 提供代码,他是否会完全理解为什么你的解决方案有效。
      • @KLee1 好的,我添加了一个简单的解释
      【解决方案3】:

      您不能在 HTML 标记中包含 HTML cmets,因为注释本身就是一个标记。

      您可以从事件处理程序中返回false 以阻止浏览器跟踪链接:

      <a href="http://www.google.com" target="_blank" onclick="javascript:alert('Navigation Prevented');return false;">CLICK HERE FOR GOOGLE</a>
      

      【讨论】:

        【解决方案4】:

        在看到其他用户说 cmets 不能包含在元素属性中后,我开始想知道为什么。当然这是一个不好的做法,但为什么它不工作呢?

        我检查了 HTML5 commentsHTML4.01 comments 的规范,答案在 4.01 规范中:

        注意 cmets 是标记

        注释的&lt;! 部分仅打开一个声明,&gt; 将其关闭。将声明标识为注释的是-- 字符串。当将注释语法与 doctype 声明和 CDATA 部分进行比较时,这一点变得很明显。

        因为您不能将声明放在属性值中(我无法在规范中找到明确说明,但这似乎很明显),cmets 不能包含在属性值中。

        有趣的是,HTML5 comments 部分没有提到“cmets 是标记”注释。但是,我确信同样的规则仍然适用。

        如果有任何错误,请随时发布更正。

        【讨论】:

          猜你喜欢
          • 2012-03-18
          • 2012-11-13
          • 2012-10-19
          • 1970-01-01
          • 2017-04-14
          • 1970-01-01
          • 1970-01-01
          • 2015-06-26
          • 2012-01-22
          相关资源
          最近更新 更多