我记得曾经在HTML5中读到HTML5中使用target="_blank"
已经不行了,但我现在找不到它。
继续使用target="_blank"
?
我知道这通常被认为是一个坏主意,但它是以最简单的方式为PDF之类的东西打开一个新窗口,而且它也不需要你依赖JavaScript。
答案 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>
,这可能就是为什么你听说它不应再被使用了。