如何在HTML中给所有a标签添加target="_blank"属性

3

我不知道是否存在,但概率接近于零。 - ezio4df
你不能在CSS中做这些事情。但是,你可以使用HTML和Javascript。CSS用于布局,不适用于在新标签页中打开东西。 - corn on the cob
3个回答

10

为页面上所有超链接和表单指定默认目标:

<head>
  <base target="_blank">
</head>

source


谢谢,还有一个疑问,这会对具有标签的模态框或选项卡造成任何问题吗? - Zubair Nazer Oliyat
不确定,但我猜如果有问题,您可以使用特定的a标签中的默认'target="_self"'来覆盖它,这是默认行为。 - dako
是的,有一个问题,当点击模态框时,它只是打开了一个新标签页,即使模态框也打开了。 - Zubair Nazer Oliyat
你可以使用类似 onclick="return false;" 或 onclick="(function(e){e.preventDefault();})(event)" 的方法来阻止锚点标签的默认行为。 - dako

2
你也可以添加一个小脚本。
<script>
document.querySelectorAll('a')
    .forEach(function(elem) {
        elem.setAttribute('target', '_blank');
    })
</script>

0

如果所有的代码都在一个HTML文件中,最简单的方法是运行CTRL/CMD+F并为它们添加target="_blank"。例如,在Sublime Text中这非常容易实现。

这也可以很容易地通过PHP完成。

通常,CSS用于样式化HTML标记;因此,我认为在CSS中添加目标没有真正的价值。

我建议您考虑一下是否真的想在所有链接上使用target="_blank",因为这通常被认为是不好的做法。请参见https://www.searchenginejournal.com/when-not-to-use-target_blank-link-attribute/19924/

此外,始终rel="noopener"rel="noreferrer"用于您的target="_blank",因为省略这些会造成安全风险!请参见https://web.dev/external-anchors-use-rel-noopener/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接