html中A标签的target属性设置
html中A标签的target属性设置
事件起因和经过——对target属性产生兴趣
html中用<a>
标签的target
属性的值来指定如何打开一个新链接;
作为一个新手,首先想到的直接搜索,搜索结果中的问答网站的解答都让人云里雾里,于是我想看看如w3school这样的网站,在查阅了国内和国外类似的速成教程网站后,我发现还是不能很好地理解;
于是我查阅了mozilla的MDN Web Docs中有关a元素的部分,zh-CN版本的解释让我这个不从事html相关行业的人有些难以理解,最后在英文版本中我大概理解了这个标准到底是怎么规定的;
结果
于是我自己总结了一下,大概可以这么解释:
target属性的几种取值(因framename不属于Html5因此没有记录)
值 | 行为 |
---|---|
_self |
在当前的展示框中打开(默认) |
_blank |
在新的页面中(标签页或窗口)打开 |
_parent |
在现有展示框的上一级打开,如果当前展示框没有上一级,那么就表现为_self |
_top |
在最上层展示框中打开,如果没有最上层,那么就表现为_self |
关于“展示框”
我用了一个从别的地方借的词“展示框”来指代原文英语的“context”,按照页面的解释,'browsing context (a tab, window, or <iframe>
)' 也就是说context是一个可以解释为一个tab标签,一个window窗口,或者一个iframe——一个用来在html页面中展示另一个html页面的“新特性”框架的东西,因此我称之为“展示框”,来表示“在被框起来的范围展示”这样的含义;
其实个人觉得window——窗口这样的词更合适表示这样的含义,无论是压缩算法中的“窗口”,图形学中的“窗口”,都有“透过一个指定的窗从候选内容中选择性取出一部分(用来计算或者展示)”的含义,但是由于“窗口”这个词常常默认指代“在前台展示程序的窗口”或者说“打开的窗口”,而“框架”,“页面”这样的词也有别的常见指代,乱用容易引起歧义,所以不如另借一个词来表示html中的context;
打开新标签页是一个默认的行为吗?
常见的网站,例如百度搜索、知乎、Bilibili,会在一些常用的链接中直接指定_blank
这个值,因此就和谷歌一类不指定_blank
的网站表现出不同的行为,会让人觉得点击一个链接弹出新的网页是理所当然的事情,但是其实并不是这样的,恰恰相反,_self
才是target的默认值,也就是说直接在当前页面中打开才是一个“默认的”或者说“理所应当”的行为;
一些随想
翻译产生的迷惑
关于html中“上下文”的迷惑
mozilla中文页面中对于target的总览解释是这样的:
该属性指定在何处显示链接的资源。 取值为标签(tab),窗口(window),或框架(iframe)等浏览上下文的名称或其他关键词。以下关键字具有特殊的意义
其中“上下文”是个很让人迷惑的东西,什么叫“上下文”?
我最近一次接触“上下文”,是在学习编译原理的过程中,了解到“上下文无关语法”,但这对我理解html中的“上下文”毫无帮助;
我为此专门谷歌了一下“上下文 html”,解释得都玄乎其玄,并不能找到一个满意的结果;
因此不是很情愿地打开英文网页,找到了这一段的原文:
Where to display the linked URL, as the name for a browsing context (a tab, window, or <iframe>). The following keywords have special meanings for where to load the URL:
context,这是一个很容易让我联想到content(内容)的单词,context一般说的是“语境”,怎么得到一个句子所处的语境呢?初中生都知道要了解语境得参阅上下文,因此这里context翻译成“上下文”也有着很显然的类似缘由,
但是呢?这里的context,从它所指代的tab、window、iframe来看,以及后面定语从句用where作先行词来看,更强调“环境”,或者这么说,“目前打开的页面所处的环境”这个表达是不是更贴合一些呢?
说了这么多不是为了贬低翻译志愿者的工作,也没有指责的意思,我没法理解这个单词也许只是因为我没有网页方面的从业经历,所以无法意会到翻译者要传达的语义或者某些默认的行业规则,在这种情况下,由于“context”这一关键词默认用“上下文”指代了,而没有特别做出解释,因此下来的一段话都没法理解;
关于“祖先”的迷惑
事实上其他几个值我在专门查资料前就大概理解含义了,我是想找到为何有时_parent
表现出_top
一样的行为,有时_parent
和_self
的行为一样,所以才会查找专业的资料,
MDN Web Docs页面中zh-CN版本中对于top的解释:
_top
: IHTML4中:加载的响应成完整的,原来的窗口,取消所有其它frame。 HTML5中:加载响应进入顶层浏览上下文(即,浏览上下文,它是当前的一个的祖先,并且没有parent)。如果没有parent框架或者浏览上下文,此选项的行为方式相同_self
我是试图通过概览来了解它的意思的,但是“它是当前的一个祖先,并且没有parent”这样一个句子打断了我的妄想;
原文是这样的:
_top
: the topmost browsing context (the "highest" context that’s an ancestor of the current one). If no ancestors, behaves as_self
.
最上面一层,什么叫最上面,就是上面没有比它更高层次的,要是没有这种顶层,就直接用_self
的行为,就这么简单;
关于翻译
写随想其实是想写点自己关于翻译的看法,但是写的过程中大概也发现了上面提到的文档可能是机翻的(如果是志愿者翻译的请无视我的错误),因此也没那么冲动了,但最后还是想写点东西的;
可能这篇文章看起来像是在批判翻译文,表达一种“不如不看中文文档直接看原文又不是看不懂”的思想,就像之前的类似事件:某几所高校采用英文教材取代原有的翻译教材,大大提高了教学效率,之前互联网社区也经常有人说,某些理工方面的专业教材看得人一头雾水,找原书拿来看却很容易就看懂了;
我大概就是想说这件事,一开始我的看法也是这样的:既然翻译得烂容易让人迷惑,为什么要看翻译呢?直接看原文不就好了,从小学开始学英语,初中继续学英语,高中也要学英语,大学还要学英语的人拿到原文难道看不懂么?
但是... ... 但是我后来改变了想法;
现在我是不赞同取消翻译所有人都去看原文的这种行为的,就像这篇文章从头到尾写下来,其实最后我不赞同取消中文文档直接去看英文一样,理由很简单:
既然汉语是一门庞大的语言,那么它必然是有完备性的,不至于一有新技术就没法表示了,因为新技术是从现有技术中产生的,新技术都是基于现实的某种抽象,那么,英语能表示的新技术,汉语怎么会不能表示呢?
这就像我一直嘲笑的某国语言中用该语言的拼音直接转写新事物英文还随意乱缩写一样,或者嘲笑“梵婀玲”这种比“小提琴”垃圾了不知道多少倍的翻译一样,我嘲笑这种行为,也就像我嘲笑说话时汉语夹几个英文单词这种行为;
在信息领域,“caculator”我们翻译做“计算器”,“computer”翻译做“计算机”,“internet”互联网,“key”密钥,“database”数据库,“software” “hardware”软件硬件,“parent child”亲代、子代;
难道汉语什么时候跟不上时代了?
现在“高端人才”们要直接在先进领域用英语代替汉语,不能不让人想到以前鼓吹的“汉语拼音化”,“汉字不字母化无法进入信息时代”;
举个最简单的例子,如果当初清朝引进现代化学的几个人直接用了外文的音译来翻译化学元素“方便省事” “反正自己看得懂”,那现在的化学教育还怎么搞?
是“氢氦锂铍硼”方便,还是“海卓真 海里阿姆 里索斯 百瑞里阿姆 博拉希尔姆”方便?用这样的翻译怎么给最广大群众普及化学常识?
如果翻译不行,那是翻译自己的问题,而不是不该翻译,要让大家都去学原文,再高端的技术总有普及大众的一天,作为学习理工科的人,更应该善于用本国语言去解释外来事物,降低本国人民学习先进技术的难度,而不是像不懂事的孩子一样搞杀马特
毕竟“时髦”这样“时间身后披着的长发”的翻译比起杀马特不是更加信达雅一些吗?
Knighthana
2021年2月16日