目标=在Firefox的新选项卡中打开,而不是在Chrome(Svelte)中打开
我有一个带有几个内部链接和几个外部链接的小型单页应用程序。我希望在新选项卡中自动打开所有外部链接,因此我将html设置如下:
<base target="_blank" />
这在Chrome中运行得很好。当我点击导航栏上的链接时,我的网站会在同一个标签页内导航,而当我点击外部链接时,它会尽职尽责地在新的标签页中打开。
然而,当我使用Firefox(几个测试版本)访问我的网站时,每个单独的链接,甚至是我导航栏上的内部链接,都会在一个新的选项卡中打开。
如何更正此问题,以便在所有浏览器的新选项卡中仅打开外部链接? 谢谢解决方案
静态解决方案将在内部链接上显式显示,即在这些链接上添加target="_self"
。
如果您不想这样做,根据您的设置,Java脚本也可能提供帮助。
假设您的内部链接都是相对链接,或者至少是服务器绝对链接,并且假设您的页面是静态的(比如DOMContentLoaded
之后没有添加链接到页面),则下面的Java代码片断可以解决这个问题:
document.addEventListener('DOMContentLoaded', () => {
for (const externalLink of document.querySelectorAll('a[href^=http]'))
externalLink.target = '_blank';
})
<a href="https://google.com">Google</a>
<a href="/">Some internal link</a>
正如另一个家伙所指出的,当然,只有当您的链接可以从文档访问时才有效(如果它们驻留在shadowDOM中则不起作用)。
相关文章