HTML中_blank为何选择下划线而非其他字符作为前缀?
为什么HTML的target属性内置值要以下划线
_作为前缀? 这个设计的核心逻辑是避免内置保留值和开发者自定义的窗口名冲突,最早可以追溯到HTML 4.0规范制定阶段:
- target属性本身支持开发者自定义窗口名称,比如你给链接设置
target="note_window",后续所有带这个target值的链接,都会在同一个名为note_window的标签页/窗口中加载内容,不会重复开新窗口。 - 为了让浏览器能快速区分「开发者自定义的窗口名」和「HTML规范内置的特殊行为指令」,规范制定组就给所有内置保留值统一加了下划线前缀——当时普通开发者自定义窗口名几乎不会用下划线开头,完全不会出现自定义名称和内置值撞名的情况,从规则上就杜绝了冲突的可能性。
- 现在我们熟悉的几个target内置值都遵循这个规则:
_blank(新窗口打开)、_self(当前页打开,默认值)、_parent(父级框架页打开)、_top(跳出所有框架在顶层页面打开),全都是下划线开头,统一识别逻辑。
这个命名约定早在HTML 3.2的草案阶段就已经确定,后续的HTML5规范也完全沿用了这套规则,没有做修改,核心目的是保持向下兼容性,避免旧站点的链接跳转逻辑出现异常。
内容的提问来源于stack exchange,提问作者seventeen
相关产品推荐
相关产品推荐

