在HTML5中使用target ="_ blank"可以吗?

Dar*_*ein 160 html javascript html5 window

我记得曾经在某个地方读过HTML5中不再可以使用target="_blank"HTML5,但我现在找不到它.

可以继续使用target="_blank"吗?

我知道这通常被认为是一个坏主意,但它是以最简单的方式为PDF之类的东西打开一个新窗口,它也不需要你依赖JavaScript.

mik*_*ike 154

它看起来target="_blank"还好.它在最新的HTML5草案中列为浏览上下文关键字.

  • 每次用户点击链接时,`target ="_ blank"`都会打开一个新窗口.除非这是你想要发生的事情(并且它很少),考虑使用`target ="somethingUnique"`以便用户只能打开一个窗口,即使他们多次点击链接.它使用户体验更好. (54认同)
  • @BanksySan:我认为`target ="_ blank"`很好的一个例子是共享按钮. (4认同)

小智 90

可以使用target="_blank"; 这是在XHTML中完成的,因为定位新窗口将始终在大多数浏览器中显示弹出警报.XHTML将始终在验证中显示目标属性的错误.

HTML 5将其归还,因为我们仍在使用它.这是我们的朋友,我们不能放手.

绝不放手.


chh*_*vey 15

虽然在HTML5中target="_blank"可以接受的,但我个人尝试永远不要使用它(即使在新窗口中打开PDF).

HTML应该定义含义和内容.问问自己,"会的意义了的a,如果该元素的变化target属性被拆除?"如果没有,代码不应该是在HTML去.(实际上我对W3C保留它感到惊讶......我猜他们真的不能放手.)

浏览器行为,特别是与用户的交互行为,应该使用JavaScript等客户端脚本语言来实现.由于您希望浏览器以特定方式运行,即打开一个新窗口,您应该使用JS.但正如您所提到的,这种行为需要浏览器依赖JS.(虽然如果你的网站优雅地降级,或逐步增强,或者其他什么,那么它应该仍然没问题.禁用JS的用户不会错过太多.)

话虽如此,这些都不是正确的答案.在某处,有人认为链接打开的方式最终应由最终用户决定.举个例子.

你正在浏览维基百科,越来越深入到兔子洞.你在阅读中遇到了一个链接.

假设你想在回来之前快速浏览链接页面.您可以在新选项卡中打开它,然后在完成后关闭它(因为点击"后退"按钮并等待页面重新加载需要太长时间).或者,如果它看起来很有趣并且您想将其保存以供日后使用,该怎么办?也许您应该在新的背景选项卡中打开它,并继续阅读当前页面.或者,也许您决定已经阅读了此页面,因此您只需按照当前标签中的链接即可.

关键是,您有自己的工作流程,并且您希望浏览器的行为相应.如果它为你做出这些决定,你可能会感到非常沮丧.

话虽如此,网络开发人员应该清楚地说明他们的链接在哪里,他们引用的源的类型和/或格式,以及他们做了什么.工具提示可以是您的朋友(除非您使用平板电脑或手机;在这种情况下,请在移动网站上指定这些).我们都知道,在我们没想到的某个地方或者让我们不想要的事情发生的时候,我们感到很糟糕.


小智 12

这是用PDF打开新窗口的最简单方法

这也是惹恼非Windows用户的最简单方法.PDF在其他平台上的浏览器中打开很好.打开一个新窗口也会破坏导航历史记录,并使智能手机等较小平台上的问题复杂化.

不要因为旧版本的Windows被破坏而不打开像PDF这样的东西的新窗口.

  • 知道当你告诉别人不要使用某些东西时有什么帮助吗?向他们展示****使用的HTML5下载属性:**<a download="[file name here]" href="file.ext"> etc </a>**. (10认同)

小智 7

大多数 Web 开发人员target="_blank"仅用于在新选项卡中打开链接。如果您target="_blank"仅用于在新选项卡中打开链接,那么它很容易受到攻击者的攻击。当您在新选项卡 ( target="_blank") 中打开链接时,在新选项卡中打开的页面可以访问初始选项卡并使用window.opener属性更改其位置。

Javascript代码:

window.opener.location.replace(malicious URL)
Run Code Online (Sandbox Code Playgroud)

预防:

rel="nofollow noopener noreferrer"
Run Code Online (Sandbox Code Playgroud)

更多关于属性值。


koj*_*ow7 5

虽然目标在 HTML5 中仍然可以接受,但它不是首选。要链接到 PDF 文件,请使用下载属性而不是目标属性。

下面是一个例子:

<a href="files/invoice.pdf" download>Invoice</a>
Run Code Online (Sandbox Code Playgroud)

如果原始文件名被编码用于唯一的文件存储,您可以通过为下载属性指定一个值来指定用户友好的下载名称:

<a href="files/j24oHPqJiUR2ftK0oeNH.pdf" download="invoice.pdf">Invoice</a>
Run Code Online (Sandbox Code Playgroud)

请记住,虽然大多数现代浏览器都支持此功能,但有些可能不支持。有关更多信息,请访问 caniuse.com