gpt4 book ai didi

Javascript 重写 mousedown 上的所有外部链接?

转载 作者:行者123 更新时间:2023-11-30 08:11:16 25 4
gpt4 key购买 nike

如何使用单个 onmousedown 事件重写所有外部链接

有点像 facebook 对它的链接 shim 所做的事情

请查看有关链接填充程序的原始 Facebook 文章: http://on.fb.me/zYAq0N

要求:

  • 应适用于 mainsite.com 上的所有子域。

  • 应该将 example.com 重定向到mainsite.com/link.cgi?u=http://example.com

  • 应该只重定向不属于 mainsite.com 的链接。

用途:

这是为了保护私有(private)网络应用程序用户的安全,并保护推荐人。

如 FB 文章中所指出的那样,最好即时执行以获得良好的 UI。

当用户将鼠标悬停在某个链接上时,它会显示正确的链接,但当他单击它时,js 会将其重定向到 my.site.com/link.cgi=http://link.com

提前致谢

已解决:https://gist.github.com/2342509

最佳答案

对于单个链接:

function $(id){ return document.getElementById(id); }
$(link).onclick = function(){ this.href = "http://otherlink.com"; }

<a href="http://example.com" id="link">My Sheisty Link</a>

所以要获取所有外部链接:

window.onload = function(){
var links = document.getElementsByTagName("a");
for(a in links){
var thisLink = links[a].href.split("/")[2];
if(thisLink !=== window.location.hostname){
links[a].href = "http://mainsite.com/link.cgi?u=" + links[a]; }
// Or you could set onclick like the example above
// May need to accommodate "www"
}}

编辑:
找到this answer并有了更好的主意。

document.onclick = function (e) {
e = e || window.event;
var element = e.target || e.srcElement;

if (element.tagName == 'A') {
var link = element.href.split("/")[2];
if(link !=== window.location.hostname){
links[a].href = "http://mainsite.com/link.cgi?u=" + links[a]; }
return false; // prevent default action and stop event propagation
}else{ return true; }
}};

关于Javascript 重写 mousedown 上的所有外部链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10063493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com