Javascript在鼠标按下时重写所有外部链接
Javascript to rewrite all external links on mousedown?
如何使用单个 onmousedown 事件重写所有外部链接?
有点像Facebook对它的链接填充程序所做的
请查看有关链接垫片的原始Facebook文章:http://on.fb.me/zYAq0N
要求:
-
应该适用于 mainsite.com 上的所有子域。
-
应 example.com 重定向至mainsite.com/link.cgi?u=http://example.com
-
应仅重定向不属于 mainsite.com 的链接。
使用:
这是为了保护专用 Web 应用程序用户的安全,并保护引荐来源网址。
最好像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"
}}
编辑:
找到了这个答案,得到了一个更好的主意。
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; }
}};
如果你使用 jQuery,那么以下内容将起作用
$('a:link').mousedown(function() {
this.href = 'http://my.site.com/link.cgi=' + this.href;
});
否则
var anchors = document.getElementsByTagName('a');
for(var i = 0; i < anchors.length; i++) {
var a = anchors[i];
if(a.href) {
a.addEventListener('mousedown', function(e) {
this.href = 'http://my.site.com/link.cgi=' + this.href;
}, false);
}
}
相关文章:
- 外部链接的Javascript文件赢得't执行,但函数有效
- Cordova包装应用程序内部链接加载在应用程序中,外部链接加载在浏览器中
- 正在创建网页,并希望将外部链接调用为html和css
- 为在新窗口中打开外部链接创建异常
- 将外部链接编写到js文件中
- 打开除域之外在新选项卡中打开的所有外部链接
- 具有http外部链接的SSL网站
- 什么'这是使用jQuery将一些文本锚定到外部链接的最简单方法
- 如何自动添加target=“_空白“;仅限于外部链接
- javascript外部链接文件的可接受数量是多少
- 使用 jQuery 更改所有外部链接
- 将$ionicLoading.show()用于外部链接的方法
- 可以't在dropbox托管网站中打开外部链接
- 对于JQM中的外部链接,动态添加的链接上的触发器('click')不会传播
- 如何使用SheetJS从外部链接解析Excel文件(AmazonS3)
- 当外部链接打开Tab时,页面滚动到顶部也固定了导航栏
- 如何检测用户点击了内部或外部链接
- 如何从外部链接JS文件
- 带有标签的外部链接会延迟滚动事件
- 从inappbrowser中的链接打开mobilesafari中的外部链接