如何使用 javascript 更改所有链接

Posted

技术标签:

【中文标题】如何使用 javascript 更改所有链接【英文标题】:How to Change All Links with javascript 【发布时间】:2012-10-28 18:44:55 【问题描述】:

我想更改我网站的所有链接。假设 .Example http://www.google.com/ 给出的链接更改为 http://www.mysite.com/?redirect=http://www.google.com/

我有自己的重定向器,只是我需要通过 javascript 更改所有 url 的链接

【问题讨论】:

到目前为止你尝试过什么?请注意,您可以编辑您的问题以更新它。 【参考方案1】:
var anchors = document.getElementsByTagName("a");

for (var i = 0; i < anchors.length; i++) 
    anchors[i].href = "http://www.mysite.com/?redirect=" + anchors[i].href

然后,您可以通过将代码包装在链接到 window.onload 事件的函数中来使代码在页面加载时运行:

window.onload = function() 
       /* onload code */

【讨论】:

100% 工作!谢谢! *** 很棒! 但是如果我把它放在博客模板头然后它不起作用,因为它显示错误“元素的内容必须由格式正确的字符数据或标记组成。” 但现在我将在外部 javascript 文件上使用它! ishanplus.blogspot.com/2012/11/… 我在这个网址上使用了它!谢谢....给我你网站的链接...我需要给你学分 我认为这个答案并不完全正确,因为 href 可能包含 mailto:someemail@test.com 并且不应更改此 hrefs。我认为解决方案应该检查 href 是否是正确的 URL 地址。如果不是,那么我们不应该更改此链接【参考方案2】:

只是另一个版本,对本地链接和.forEach()进行了一些检查

var links = [].slice.apply(document.getElementsByTagName("a"));
links.forEach(function(link) 
    var href = link.href;

    if (href.length && href.substring(0, 1) !== "#" && href.substring(0, 1) !== "/") 
        link.href = "http://www.mysite.com/?redirect=" + encodeURIComponent(link.href);
        console.log(link.href);
    
);

【讨论】:

【参考方案3】:

如果你在没有框架的情况下使用 javascript,你可以使用以下几行:

var links, i, le;
links = document.getElementsByTagName('a');
for (i = 0, le = links.length; i < le; i++) 
    links[i].href = "http://www.mysite.com/?redirect=" + encodeURIComponent(links[i].href);

【讨论】:

【参考方案4】:
$('a').each(function(i, e)

    var current = $(this);

    current.attr('href', 'http://www.mysite.com/?redirect=' + encodeURIComponent(current.attr('href')))
);

【讨论】:

以上是关于如何使用 javascript 更改所有链接的主要内容,如果未能解决你的问题,请参考以下文章

单击链接时如何使用 Javascript 更改部分 HTML?

如何使链接颜色与父 div 相同?

如何使 JavaScript 中每个元素的 map 函数的键值递增

如何使用 JavaScript 更改 span 元素的文本?

如何使用JavaScript和CSS Grid使基于屏幕/视口大小的RadWindow响应

仅当输入中的所有元素都更改时,如何使 useEffect 挂钩调用提供的效果?