这是否让您的眼睛有点抽搐?就像……这是一个错别字。它应该是target="_blank"
,在值开头使用下划线。就像这样……
<a target="_blank" href="https://codepen.io">
Open CodePen in a New Tab
</a>
好吧,这是正确的语法!
在没有下划线的target="blank"
情况下,blank
部分只是一个名称。它可以是任何东西。它可以是target="foo"
,或者,为了预示这里的目的:target="open-new-links-in-this-space"
。
区别
target="_blank"
是一个特殊的关键字,它将每次都以新标签页打开链接。target="blank"
将以新标签页打开第一次点击的链接,但任何将来共享target="blank"
的链接都将在同一个新打开的标签页中打开。
我以前从未知道过!我感谢 这条推文的解释。
我创建了一个 非常基本的演示页面来展示该功能(代码)。观察当我点击第一个链接时如何打开一个新标签页。然后,来自任一侧的后续点击也在该新第二个标签页中打开该链接。
为什么?
我认为这里的用例很少。哎呀,我甚至 不太喜欢target="_blank"
。但这里有一个我能想象到的:文档。
假设您有一个 Web 应用程序,用户可以在其中积极地工作。将应用程序内指向文档的链接在新标签页中打开可能是有意义的,这样他们就不会离开正在进行的工作。但是,也许您认为他们不需要为每个文档链接打开一个新标签页。您可以执行以下操作……
<a target="codepen-documentation"
href="https://blog.codepen.io/documentation/">
View CodePen Documentation
</a>
<!-- elsewhere -->
<a target="codepen-documentation"
href="https://blog.codepen.io/documentation/">
About Asset Hosting
</a>
此外,请考虑
<base>
HTML 元素:https://mdn.org.cn/en-US/docs/Web/HTML/Element/base此元素可以追溯到框架时代,现在除了在您的最后一个示例中之外,它并没有太大的用处。
如果您正在构建一个完整的应用程序,其中文档项应在特定窗口中打开,或者您希望页面上的所有链接在新窗口中打开,则
<base>
元素非常有用。在框架时代,它用于告诉浏览器使用哪个框架来更新点击的链接。
带有导航的框架使用链接
<a href="#" target="content">
来更新内容框架<frame name="content">
很高兴知道这一点。
任何在 1990 年代或 2000 年代初期广泛使用框架/框架集的人都知道 target=”_blank” 和 target=”blank/something” 之间的区别。早期出生的恩典。
如果您使用“blank”,我认为您是在玩火,因为它与特殊关键字“_blank”过于混淆。您最终会让人们将它们弄错。
请记住,目标是从我们还没有 Ajax 并且人们使用框架从服务器更新页面部分之前的遗留物。目标应该具有语义名称,如“购物车”或位置,如“右侧边栏”。后来将框架或窗口命名为“blank”没有多大意义。
此外,请注意,使用 target=”_blank” 打开新标签页/窗口存在潜在的隐私和安全隐患(_尽管我相信更新的浏览器现在默认设置 rel=”noopener”_)。
Alex Yumashev 在 Jitbit 上对该问题进行了很好的解释
Target=”_blank” – 有史以来最被低估的漏洞
我已经知道这件事十多年了,我不敢相信这现在成了讨论的话题
如果我不发布一些内容是因为担心有些人可能已经知道,那么这个网站上将不会有任何博文。
我认为问题在于每天都会出生数百万婴儿,每天都有数千人学习新事物。因此,包含简单易懂信息的帖子是实际的。
如果您重新加载初始页面或打开两个实例,使用“_blank”将打开两个不同的“新标签页”。有没有办法将新内容保留在唯一且确切的一个打开的新标签页中?
我以前不知道这一点,因为我是 Web 开发的新手。感谢您分享这些信息。很想了解更多。
我有一个 网站,我是在早期(大约 2009 年)创建的,我将所有与日记相关的内容都保存在那里。至今仍在运行,该网站使用框架集。那时最酷的事情之一。
有人可能会争辩说,“早期”可能包括整个 1990 年代,但我认为任何了解历史的人都不会将 2009 年归类为“早期”,除非那是他们出生的年份。
嗨!如果您在两个实际上相同的标签页中打开 index.html,则带有 target=”_blank” 的链接不会在同一个标签页中打开,而实际上它会在两个初始标签页中打开两个不同的标签页。
我希望我解释清楚了。:)
有没有办法让来自不同页面(如果我有许多相同页面的实例)的链接每次都在同一个标签页中打开?
上面的示例适用于
target=blank
(无下划线),而不是target=_blank
(有下划线)。此外,感谢您的回答!我理解了“blank”和“_blank”之间的区别。如果我打开了两个网页 website.com,它对 website.com 上的所有 href 使用 target = “newTabEveryTime”,它会为 website.com 的两个实例打开两个新标签页。这与 tabId 有关吗?我真的很想找到一种方法,从 website.com 的任何页面(如果您使用的是例如 15 个打开的 website.com 内容标签页)上的 a href 始终在一个新标签页中打开。
这主要用于使用不同 iframe 创建页面。我在 90 年代使用它来创建一个带有菜单的简单静态网站,而无需 php。
它在 https://w3schools.org.cn/html/html_iframe.asp 中得到了很好的解释
当您使用 target 属性时,不要忘记安全问题,如以下内容所述
https://medium.com/sedeo/how-to-fix-target-blank-a-security-and-performance-issue-in-web-pages-2118eba1ce2f
我以为 target 属性已弃用,但现在我看到它们已恢复,我确实想知道为什么像这样的网站会写一篇关于已弃用属性的文章……很难跟上,感谢您的启蒙。
我仍然认为它是过去的一个属性,JavaScript 很容易实现。
也许某个框架需要它,有人知道吗?
我能想到的 2021 年现实世界中最好的例子直接来自 WordPress!
帖子编辑器中的预览链接使用
target="wp-preview-1234"
,其中1234
是帖子 ID。这意味着只有一个标签包含特定帖子的预览。如果您多次预览,它始终会更新刷新现有的命名标签,而不是生成第二个、第三个或第四个标签。(题外话:我见过有些人通过打开预览然后点击管理栏中的“编辑页面”按钮意外地生成了同一个帖子的多个编辑屏幕。我想知道一个页面是否可以在打开时为自己的标签命名——而不是作为新标签——以便编辑链接也可以防止人们在多个标签页中编辑同一个页面。我猜不行,但也许有一些技巧可以实现。