a 标签 target _blank 和 blank 的区别

24 阅读2分钟

在HTML里,<a>标签的target属性用来确定链接在何处打开。下面为你详细分析target="_blank"target="blank"的不同之处:

1. target="_blank"(标准用法)

target属性被设为_blank时,点击链接后,会强制在一个新的浏览器标签页或者窗口中打开目标页面(具体是标签页还是窗口,由浏览器自行决定)。 html <a href="https://example.com" target="_blank">在新标签页打开</a> 需要注意的关键点

  • 安全方面:如果没有添加rel="noopener noreferrer",新页面能够通过window.opener访问原页面,这可能会带来安全风险。
  • SEO方面:虽然没有确切的证据表明它会直接影响SEO,但从用户体验的角度来看,合理使用_blank是很重要的。

2. target="blank"(非标准用法)

当把target设为blank(没有下划线)时,浏览器会把它当作一个普通的窗口名称,而不是预定义的关键字。这会产生以下结果:

  • 首次点击链接时,会在新的标签页或窗口打开目标页面。
  • 再次点击相同target="blank"的链接时,所有这类链接都会在同一个标签页或窗口中打开(因为它们共享同一个窗口名称)。
<a href="page1.html" target="blank">页面1</a> <a href="page2.html" target="blank">页面2</a> <!-- 上面这两个链接会在同一个新标签页/窗口中打开 -->

主要区别

特性target="_blank"target="blank"
新标签页/窗口每次都会创建新的标签页/窗口。首次点击创建新的,之后共享同一个。
窗口名称是预定义的关键字,并非实际名称。是自定义的窗口名称。
兼容性所有浏览器都支持。所有浏览器都支持,但行为可能与预期不符。
安全风险如果没有添加rel="noopener",存在安全风险。同样存在安全风险。

最佳实践建议

  1. 统一使用target="_blank": 要是你希望链接始终在新的标签页/窗口打开,就使用target="_blank"

  2. 添加安全属性: 为了避免window.opener带来的安全问题,要配合使用rel="noopener noreferrer"

<a href="https://example.com" target="_blank" rel="noopener noreferrer">安全链接</a>
  1. 谨慎使用自定义窗口名称: 除非你确实需要让多个链接共享同一个标签页/窗口,否则不要使用target="blank"

总结

target="_blank"是标准的用法,能够确保每次都在新的标签页/窗口打开链接;而target="blank"虽然也能实现类似功能,但它的设计初衷是为了让链接共享窗口,所以可能会导致意外的结果。在实际开发中,建议优先使用target="_blank"并搭配安全属性。