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

时间:2010-11-16 20:49:33

标签: javascript html html5 window

我记得曾经在HTML5中读到HTML5中使用target="_blank"已经不行了,但我现在找不到它。

继续使用target="_blank"

是否可以

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

9 个答案:

答案 0 :(得分:150)

看起来target="_blank"仍然没问题。它在the latest HTML5 draft中列为浏览上下文关键字。

答案 1 :(得分:88)

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

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

永不放手。

答案 2 :(得分:16)

虽然target="_blank"acceptable in HTML5,但我个人尝试永远不要使用它(即使是在新窗口中打开PDF)。

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

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

话虽如此,这些都不是正确答案。 Out there somewhere认为链接的打开方式最终应由最终用户决定。以此为例。

  

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

     

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

     

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

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

答案 3 :(得分:12)

  

这是以PDF格式打开新窗口的最简单方法

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

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

答案 4 :(得分:4)

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

以下是一个例子:

 var obj = {English: 4, Math: 5, CompSci: 6};
 var n_obj = [];
 for(var i in obj){
    n_obj.push({[i]:obj[i]});
 }
 console.log(n_obj);

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

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

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

答案 5 :(得分:4)

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

Javascript代码:

window.opener.location.replace(malicious URL)

预防:

rel="nofollow noopener noreferrer"

答案 6 :(得分:2)

答案 7 :(得分:0)

您可以使用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>

答案 8 :(得分:-1)

我认为目标属性已弃用<link>元素,而不是<a>,这可能就是为什么你听说它不应再被使用了。