Chrome,Safari,Firefox或其他浏览器如何知道您访问了重定向链接的目标URL?
我总是发现有趣的是,浏览器知道重定向URL所到达的URL并将访问的样式应用于该链接。
要了解我在问什么:
但是,该链接是指向某些google.com/url...
页面的。Google是否在其标记中添加了一些内容,以告诉浏览器链接该链接的历史记录所使用的URL是什么?浏览器会以某种方式读取Google搜索结果吗?
如果在悬停链接时注意状态栏,您会看到它最初指向“干净” URL。
仅当您单击链接(使用三个鼠标按钮中的任意一个)时,才会触发JavaScript事件,该事件会将链接的目标更改为Google的URL重定向。
要验证我的主张,只需右键单击任何紫色链接,然后关闭上下文菜单。除非您已经从Google的搜索结果中访问过该网站,否则您会看到它会更改颜色。1个
我不知道究竟谷歌如何注入重定向URL 2,但总的思路是这样的:
// define a function `f' that changes a link's clean URL to a redirection URL
var f = function () {
// prepend `http://www.google.com/url?rct=j&url=' to the link's target
this.href = 'http://www.google.com/url?rct=j&url=' + escape(this.href);
// don't invoke this function anymore when clicking the link
this.removeEventListener('click', f);
// don't invoke this function anymore when right-clicking the link
this.removeEventListener('contextmenu', f);
}
// save all <a> tags in an array `a'
var a = document.getElementsByTagName('a');
// for each <a> tag in the array `a'
for (var i = 0; i < a.length; i++) {
// execute function `f' when clicking the link
a[i].addEventListener('click', f);
// execute function `f' when right-clicking the link
a[i].addEventListener('contextmenu', f);
}
您可以尝试使用此jsFiddle来查看其工作原理。
1在Chromium 25(Ubuntu 12.10)和Chrome 26(Windows 7)上进行了测试
2最小化的JavaScript有点难以阅读。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句