Javascript替换所有外部链接

Javascript替换所有外部链接,javascript,url,hyperlink,Javascript,Url,Hyperlink,我试图实现的是在页面加载时替换所有外部链接 例如,原始url: http://microsoft.com/faq become newurl 应改为: http://redirect.com/?url=http://microsoft.com/faq 我尝试了我在谷歌找到的不同的解决方案,但似乎什么都不适合我 我想我在这里找到了一个解决方案:编辑以检查内部域: function isExternal(link, domain) { var re = /http(s?):\/\/([

我试图实现的是在页面加载时替换所有外部链接

例如,原始url:

http://microsoft.com/faq become newurl
应改为:

http://redirect.com/?url=http://microsoft.com/faq 
我尝试了我在谷歌找到的不同的解决方案,但似乎什么都不适合我


我想我在这里找到了一个解决方案:

编辑以检查内部域:

function isExternal(link, domain) {
    var re = /http(s?):\/\/([\w]+\.){1}([\w]+\.?)+/;
    return re.exec(link)[0] === domain;
}

var SITE = "http://redirect.com/?url=";
var INTERNAL_DOMAIN = "http://www.yourdomain.com";
var links = document.getElementsByTagName("a");
for (var i=0; i<links.length; i++) {
    if (isExternal(links[i].href), INTERNAL_DOMAIN) {
        links[i].href = SITE + links[i].href;
    }
}
函数是外部的(链接,域){
var re=/http(s?):\/\/([\w]+\.){1}([\w]+\.?)+/;
返回re.exec(link)[0]==域;
}
变量站点=”http://redirect.com/?url=";
var内部_域=”http://www.yourdomain.com";
var links=document.getElementsByTagName(“a”);

对于(var i=0;我的问题似乎到处都是邪恶的意图/垃圾邮件制造者。如果你给我们你的标记,帮助你会容易得多。使用
document.getElementsByTagName(“a”);
for
循环以迭代找到的元素。在循环中,检查
href
的域是否不是您的域。如果是,请将
href
属性替换为
http://redirect.com/?url=
+原创
href
布拉德·M,找个生活伴侣。你认为我拥有ms.com还是redirect.com?:DNo伊万,我知道bt任何人都认为你拥有这两个域名中的任何一个,但示例可以更改。就我个人而言,我不在乎你如何处理这些信息。没有人用这么简单的脚本入侵我的一个网站。这并不检查链接是否是外部/内部的。我也将使用这种代码和平,但用于其他用途。谢谢你的关注!作为回应对于Ian,只需对“http://”添加一个indexOf检查或者是一个内部域的字典,这个脚本可以很好地工作。@iGanja不,不是真的。
http://
不是一个域,对此没有帮助。
href
属性必须被正确/准确地解析和检查,才能成为完整的解决方案。这里展示的是如何循环
elements,这很重要,但不完整,因为OPI没有,这就是为什么我提供了两种解决方案。抱歉,如果我希望SO上的人了解一些知识。如果我要给出完整的解决方案,我会写一个答案,而不仅仅是评论。