关于target="_blank"去留的问题在网上已经被反复争议很多次了。有的说要留,有的说要去掉。主张留的一方主要是考虑到target="_blank"的属性目前来讲还没有一个好的方式来解决,而主张去的一方则拿出了rel与JS的解决方案。
在HTML中,`<a>`标签用于创建超链接,它有两个关键属性——`rel`和`target`,它们各自有着不同的用途和含义。
`target`属性定义了链接内容在何处展示。它提供了四个预定义的值:
1. `_blank`:在新窗口或标签页中打开链接文档。如果窗口不存在,浏览器会创建一个新的窗口。
2. `_self`:这是默认值,表示链接在当前窗口或标签页中打开,即替换当前页面内容。
3. `_parent`:如果页面在框架内,链接会在父框架中打开。如果当前页面就是顶层框架,则与`_self`相同。
4. `_top`:在所有框架中打开链接,清除整个框架集,使链接内容成为整个浏览器窗口的内容。
关于`target="_blank"`的争议在于,一些人认为它可能导致用户体验不佳,因为它可能会意外打开新的窗口或标签页。而另一些人则认为,目前没有更好的替代方案来实现相同功能,尤其是考虑到某些用户可能希望在新窗口中查看链接内容。
另一方面,`rel`(relation)和`rev`(reverse relation)属性是关于文档之间关系的声明。`rel`定义了从当前文档到目标文档的关系,而`rev`则相反,定义了从目标文档回溯到当前文档的关系。这些属性增强了页面的语义,有助于搜索引擎理解和解析网页内容。常见的`rel`值包括:
1. `next`:表示指向序列中的下一个文档。
2. `prev`:表示指向序列中的上一个文档。
3. `head`:表示链接到文档集合的顶部或主页。
4. `toc`:表示链接到文档的目录。
5. `parent`:链接到当前文档的上级文档。
6. `child`:链接到当前文档的子级文档。
7. `index`:链接到文档的索引。
8. `glossary`:链接到文档的术语表。
`rel`和`rev`的组合可以清晰地表达文档之间的层次和导航结构。例如,`rel="next"`和`rev="prev"`可以用于创建一个页面序列,`rel="head"`和`rev="toc"`可以用于表示目录和主要内容的链接关系。然而,由于CSS当前无法直接利用这些属性值来定义样式,因此`rel`和`rev`主要用作增强页面的语义性,而视觉上的区别通常需要通过其他方法实现。
`target`关乎链接内容的显示位置,关注的是用户界面的交互,而`rel`和`rev`则关注页面间的逻辑关系,强调的是文档结构和内容的组织。理解这两个属性的正确使用有助于提升网页的可用性和可访问性。在实际应用中,开发者需要根据具体需求和用户体验来决定是否使用`target="_blank"`,以及如何利用`rel`和`rev`来丰富页面的语义信息。