这个问题已被多次询问,但大部分问题都是陈旧的。
我尝试了几种不同的技术:
a:visited {} /* read computed style - always returns :link color*/
a:visited {} /* set height and measure that, turns out you can only set various colors */
a:link:after { content:"abc"} /* tried various styles */
/* the same restrictions apply when dealing with nested/child elements */
我尝试拍摄div的“屏幕截图”并将其放入画布中以获得像素颜色。
我考虑过将一个半透明的div悬停在一个锚上,并以某种方式使用它来测量颜色。
我已经尝试从你想要嗅探的网站加载一个样式表并计算它需要多长时间(在第一个/第二个/ ...加载时),但结果很奇怪(有时它第一次加载得比实际更快通过网络比本地缓存或其他东西更快。
<script>
var t = new Date().getTime();
</script>
<link id="test" rel="stylesheet" type="text/css" href="http://l.yimg.com/zz/combo?nn/lib/metro/g/breakingnews/breakingnews_0.0.49.css" />
<script>
document.getElementById("test").onload = function () { var ft = ((new Date().getTime()) - t) + "ms";
alert(ft);
};
</script>
Mozilla概述了这些安全限制的原因和方法here。
历史嗅探是否完全不可能,如果有,是否有任何标准/接受/用户友好的方式?
答案 0 :(得分:1)
正如评论所强调的那样,您将无法获取浏览器历史记录信息 - 至少,如果浏览器的设计不符合要求,则不会 - 因为这是违反隐私的行为。
有一些有限的选择:
history
对象具有back
,forward
和length
方法
在当前窗口或框架中前后导航;但是(隐私
再次)它是可读的,所以你不能做的事情
x = window.history[0]
答案 1 :(得分:1)
正如@boisvert指出的那样,这是一种侵犯隐私的行为。它曾经是可能的,但不是最近的浏览器版本。尝试在localStorage上保存点击链接并稍后检查可能会更好。它不是100%有效,但在浏览器端使用javascript,你永远不会100%。
作为站点节点,您可能还想在服务器端执行此操作。这将是100%有效。