摘要
target="_blank"链接过去通常会给新页面留下opener,使它能指向打开它的旧标签页。- 2018 年的提案与 2019 年的 HTML 改动让
_blank默认采用noopener;需要旧连接时须显式写出rel="opener"。
点开链接,新标签页出现;旧页面退到后面,看上去已经各过各的。浏览器过去常把一只看不见的把手交给新页面,名字叫 window.opener。有了它,目标页可以让原来的标签页跳转。屏幕上明明是两块分开的矩形,暗处却连着一根线。界面给了读者“我已经离开”的感觉,权限关系没有跟上。
2018 年 10 月 10 日开启的 WHATWG 讨论把这根线摆到了台面上。Chris Dumez 指出,当时的 target="_blank" 会给新页面 opener,除非作者记得加 rel="noopener"。他建议把默认方向倒过来:普通新标签先断开连接,确实需要两页协作的作者再写 rel="opener"。原本给合作窗口准备的便利,随着普通外链走出了家门。
第二天的 WebKit 问题记录开始试验这一改法:把 _blank 链接当作已经带了 noopener,而 opener 用来主动请求旧关系。用户看到的动作还是打开新标签;变化发生在门后的那根细绳上。站点不必在每个出口都靠编辑记忆补一个防护词。
2019 年 2 月 7 日并入的 WHATWG 修改把想法写进 HTML。现行链接算法先看 rel 是否带 noopener 或 noreferrer;_blank 若没有 opener,也按断开 opener 处理。需要连接的一方可以明确写 rel="opener"。两页仍能同时存在,读者也仍能切换;只是新页默认不再握着旧页的门把手。
这段历史的趣味,是屏幕几乎没有改变。过去由作者负责记住“断开”的词,漏一次,目标页就有回头碰原页的机会。现在由浏览器先把两间房分开,作者若有协作需求,再明白写出连接。标准把日常点击背后的责任从无数页脚清单,移到了浏览器的默认规则。
“新标签页”是界面描述,不是权力说明。读者看见两间房,浏览器决定门之间有没有通道。2018 年的提案、WebKit 实验和 2019 年标准改动,一起改掉了这条暗线的默认接法。互联网史有时不是发明一扇新门,而是发现旧门的把手一直被别人牵着。
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance





