使用 jQuery 更改所有外部链接

Change all external links using jQuery

我想更改我博客上的所有外部链接(此处为 blogspot,这就是我寻找 jQuery 代码的原因)而不更改我博客的 posting,因为我需要很多如果我这样做的话,工作量很大。

比如我的网站是example.com。 我想将所有外部链接更改为

http://example.com/p/go.html?url=http://externallink.com

无需对我的博客进行任何更改 post。我没有任何想法可以开始。

已解决:https://gist.github.com/2342509谢谢大家:D 我只需要稍微改变一下。

在jQuery你可以试试:

// DOM ready
$(function(){
    $('a[target="_blank"]').prop('href', 'http://example.com/p/go.html?url=http://externallink.com');
});

当然,只有当您在 HTML 中设置了 target="_blank" property/attribute 并且您希望所有 link 都打开相同的 url.这个想法源于您希望在不同的 tab/window.

中自动打开外部 links

如果这不是必需的功能,您可以以类似的方式使用自定义 data- 属性。唯一的区别是您需要循环每个 link,并从中获取数据。

// DOM ready
$(function(){
    $('a[data-href]').each(function(){
        var anc = $(this),
            href = anc.prop('href'),
            dataHref = anc.data('href');

        anc.prop('href', href + '?url=' + dataHref);
    });
});

HTML 示例:

<a href="http://example.com/p/go.html" data-href="http://externallink.com">external link</a>

如果这仍然不是您想要的,现在您可能需要添加更多信息。

离开@Tim Vermaelan 的回答,你可以试试这个,它会检查每个 link 不是以你网站的 URL 开头的,而不依赖于它是 target="_blank":

$('a:not([href^="http://yoursite.com"])').prop('href', 'http://example.com/p/go.html?url=http://externallink.com');