如何使用 JS(有例外规则)自动在 new window 中打开外部链接?

How do I make external links open in new window automatically with JS (with exception rule)?

对于我的问题,到目前为止我还没有找到解决方案。 我想要的是一个 js 脚本,它将转换我网站(页面)上的所有外部链接,以便它们在新的 window 中打开(将 target=_blank 添加到 a 标记)。

为此,我找到了一个简单的脚本来执行此操作,并且它非常有效(来源:gist.github.com/wpscholar)。但是,我根本无法控制输出。而且我认为对更改哪些链接和不更改链接进行一些控制是有意义的。这是基本脚本:

/** Open all external links in a new window */
jQuery(document).ready(function($) {
$('a')
    .filter('[href^="http"], [href^="//"]')
    .not('[href*="' + window.location.host + '"]')
    .attr('rel', 'nofollow noopener noreferrer')
    .attr('target', '_blank');
});

谁能给我一个关于如何添加异常的示例脚本,当 a 标签具有 class=trusted 时?其中只设置了target属性,rel属性留空

<a href="https://somedomain.com/" class="trusted">anchor</a>

变为:

<a href="https://somedomain.com/" class="trusted" target="_blank">anchor</a>

当找不到class=trusted时,应该只执行示例脚本。

非常感谢,新年快乐!

我认为您应该使用 not() 将 class "trusted" 添加到 jQuery 选择器(就像您对 href 所做的那样):

/** Open all external links in a new window */
jQuery(document).ready(function($) {
$('a')
    .filter('[href^="http"], [href^="//"]')
    .not('[href*="' + window.location.host + '"]')
    .attr('rel', 'nofollow noopener noreferrer')
    .not('.trusted')
    .attr('target', '_blank');
});