在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" ,存在安全风险。 | 同样存在安全风险。 |
最佳实践建议
-
统一使用
target="_blank"
: 要是你希望链接始终在新的标签页/窗口打开,就使用target="_blank"
。 -
添加安全属性: 为了避免
window.opener
带来的安全问题,要配合使用rel="noopener noreferrer"
。
<a href="https://example.com" target="_blank" rel="noopener noreferrer">安全链接</a>
- 谨慎使用自定义窗口名称:
除非你确实需要让多个链接共享同一个标签页/窗口,否则不要使用
target="blank"
。
总结
target="_blank"
是标准的用法,能够确保每次都在新的标签页/窗口打开链接;而target="blank"
虽然也能实现类似功能,但它的设计初衷是为了让链接共享窗口,所以可能会导致意外的结果。在实际开发中,建议优先使用target="_blank"
并搭配安全属性。