Javascript 可以使用target="_“空白”;在HTML5中?

Javascript 可以使用target="_“空白”;在HTML5中?,javascript,html,window,Javascript,Html,Window,我记得在某个地方读到,在HTML5中,在HTML5中使用target=“\u blank”已经不合适了,但我现在找不到了 是否可以继续使用target=“\u blank” 我知道这通常被认为是个坏主意,但这是为PDF之类的东西打开新窗口的最简单方法,而且它也不需要依赖JavaScript。的确如此 看起来target=“\u blank”仍然正常。它在中作为浏览上下文关键字列出。可以使用target=“\u blank”;这在XHTML中被取消了,因为在大多数浏览器中,瞄准新窗口总是会弹出警报

我记得在某个地方读到,在HTML5中,在HTML5中使用
target=“\u blank”
已经不合适了,但我现在找不到了

是否可以继续使用
target=“\u blank”

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

的确如此


看起来
target=“\u blank”
仍然正常。它在中作为浏览上下文关键字列出。

可以使用
target=“\u blank”
;这在XHTML中被取消了,因为在大多数浏览器中,瞄准新窗口总是会弹出警报。XHTML将始终在验证中显示带有target属性的错误

HTML5把它带回来了,因为我们还在使用它。这是我们的朋友,我们不能放手

永远不要放手

这是打开一个新窗口(比如PDF)的最简单方法

这也是骚扰非Windows用户的最简单方法。PDF可以在其他平台的浏览器中正常打开。打开一个新窗口也会扰乱导航历史,并使智能手机等小型平台上的问题变得复杂

不要仅仅因为旧版本的windows被破坏就打开PDF之类的新窗口。

虽然
target=“\u blank”
是,但我个人尝试从不使用它(即使是在新窗口中打开PDF)

HTML应该定义含义和内容。问问自己,“如果删除了
target
属性,
a
元素的含义是否会改变?”如果不是,则代码不应进入HTML。(事实上,我很惊讶W3C保留了它……我想他们真的不能放手。)

浏览器行为,特别是与用户的交互行为,应该使用客户端脚本语言(如JavaScript)实现。由于您希望浏览器以特定的方式运行,即打开一个新窗口,因此应该使用JS。但正如您所提到的,这种行为要求浏览器依赖JS。(虽然如果你的网站优雅地退化,或者逐渐增强,那么它应该还是可以的。禁用JS的用户不会错过太多。)

尽管如此,这两个都不是正确的答案。链接的打开方式最终应由最终用户决定。以此为例

你在维基百科上冲浪,越来越深入到一个兔子洞里。你在阅读中遇到了一个链接

假设你想在回来之前快速浏览链接页面。您可能会在新选项卡中打开它,然后在完成后关闭它(因为点击“后退”按钮并等待页面重新加载会花费太长时间)。或者,如果它看起来很有趣,你想把它留着以后用呢?也许你应该在一个新的背景标签中打开它,继续阅读当前页面。或者,也许你已经看完了这个页面,所以你只需按照当前选项卡中的链接进行操作

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


也就是说,web开发人员应该明确他们的链接去哪里,他们引用的源的类型和/或格式,以及他们做什么。工具提示可以是您的朋友(除非您使用的是平板电脑或手机;在这种情况下,请在移动网站上指定这些提示)。我们都知道,被带到一个我们没有预料到的地方,或者让我们没有本意的事情发生,是多么糟糕。

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

以下是一个例子:

<a href="files/invoice.pdf" download>Invoice</a>

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

<a href="files/j24oHPqJiUR2ftK0oeNH.pdf" download="invoice.pdf">Invoice</a>


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

大多数web开发人员仅使用
target=“\u blank”
在新选项卡中打开链接。如果您仅使用
target=“\u blank”
打开新选项卡中的链接,则该选项卡易受攻击者攻击。当您在新选项卡中打开链接时(
target=“\u blank”
),在新选项卡中打开的页面可以访问初始选项卡,并使用
窗口。opener
属性更改其位置

Javascript代码:

window.opener.location.replace(malicious URL)
预防:

rel="nofollow noopener noreferrer"

我认为元素的target属性已被弃用,而不是
,这可能就是您听说它不应该再被使用的原因

使用jquery,您可以通过以下方式进行操作,这将在新窗口中打开它:

<input type="button" id="idboton" value="google" name="boton" /> 

<script type="text/javascript">
    $('#idboton').click(function(){
        window.open('https://www.google.com.co');
    });

</script>

$('#idboton')。单击(函数(){
打开窗户https://www.google.com.co');
});

@Gumbo回来了。请参阅mike的链接以了解规范的当前版本。通常,如果您想从站点打开外部站点,那么在我看来,打开一个新窗口(这可能是目前大多数浏览器的新选项卡)是一个更好的主意。@hobbes3,请停止弄乱我的导航和历史记录。是我在浏览,是我在决定一个链接是在新的(中键单击)还是在相同的(左键单击)选项卡中打开。当我遇到一个网站强迫我按照它的“合理的最佳实践”在新标签页中打开每个链接时,我会立即高兴地离开。@Albireo,这只是我的观点,一些流行的web服务也采纳了同样的想法。例如,在Gmail中单击邮件中的链接,默认情况下会打开一个新窗口。@Albereo您假设用户总是像您一样先进和精通技术。
target
等存在是有原因的。有时它们是必需品。例如,使用有状态JS动态生成的页面