【问题标题】:Standards-compliant equivalent to target="_blank"符合标准的等效于 target="_blank"
【发布时间】:2011-08-23 12:49:28
【问题描述】:

在某些情况下,我必须在新窗口/标签中打开链接。有没有一种方法对严格的 HTML 有效?使用 jQuery 这样做是可以接受的,但我宁愿不只是将 target="_blank"s 偷偷带回 w/jQuery,这样验证器就不会看到它们。

【问题讨论】:

  • 这是一个方便的流程图,可帮助您了解何时使用 target="_blank":t.co/gfKZiXt
  • @jerone:这很有趣,但实际上并没有帮助。
  • 对不起,今天才收到这条推文。 Ontopic:不知道任何有效的方法; jQuery 似乎是最好的选择。
  • 我见过的最明智的事情是设置 rel="external" 并使用 JavaScript 来执行它。但是你为什么不想使用target?您使用的是 XHTML Strict 文档类型吗?因为如果您使用的是 HTML5,target 实际上是有效的。
  • @jerone:没必要道歉......这很有趣。 @sdleihssirhc:我没有意识到它已经不再贬值了......不幸的是,我认为我们的用户群可能仍然在 IE7 中过于根深蒂固,无法使用 HTML5。

标签: jquery html strict new-window


【解决方案1】:

这可行:<a href="test.html" onclick="window.open(this.href); return false; ">click me</a>

但是,附加事件处理程序的onclick 属性通常是不可维护的。附加事件处理程序的适当方法取决于您的 javascript 框架。 selector.click(function) 适用于 jQuery。

【讨论】:

  • 请不要在属性值中使用(并推荐使用)事件处理程序。
  • 决定事件处理程序的方法是一个完全独立的主题。作者关心的是window.open
  • 在为新手提供答案时,负责任的做法是对答案的内容进行迂腐。如果有更好的方法,你应该展示它。
  • 你是对的。我现在试图在我的回答中更清楚地说明情况。
  • 这个是 Ates。甚至不帮助新手,只是帮助一般的人,你应该给他们最新的代码。 JS 内联已经过时了很长时间。就像有人问如何让滚动条的文本左右移动,你给了他们一个<marquee>标签作为建议;)
【解决方案2】:

既然你说 jQuery 是允许的。

<a href="http://mysite.com" class="newWindow">Open in new window</a>

$('a.newWindow').click(function(e){
   e.preventDefault();
   window.open(this.href);
});

你也可以通过普通的 JS 来做到这一点。这样,您的 HTML 就不会到处乱写onclick

编辑 - 根据 Ian 的建议更新为使用 e.preventDefault()

【讨论】:

  • each -> click? return false -> e.preventDefault()?
  • 还有' -> " 为了正确的HTML。
  • 我认为你的意思是 $('a.newWindow').click(...)
  • @ates @Abdullah 已修复!谢谢大家,这是真的漫长的一天的尾声:) return false 防止默认并停止传播,因此它运行良好
  • @JohnP stackoverflow.com/questions/1357118/… - 恕我直言,使用 return false 通常不是正确的做法。但视情况而定。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多