2009-08-05 110 views
1

JavaScript中有window.history对象。使用javascript获取完整的网址历史记录

有可能使用window.history.lenght 得到历史的lenght或使用history.go重定向到历史上一个/下一个URL(N)

是否有任何的手段来得到的网址历史对象?正如我看到它不可能与历史对象 ,因为网址甚至不是只读。

你有什么想法吗?

+4

第一个问题是为什么你需要这样的事情。 – rahul 2009-08-05 12:17:59

+0

对于网站统计。我使用横幅广告网络,如果有人来自img.doubleclick.com,我想查看该网站的真实网址,它为我带来当前访问者。 – Zelid 2009-08-05 12:45:53

+4

此问题似乎无关紧要,因为它涉及到双击横幅广告网络的支持请求。 – hakre 2013-09-29 08:17:58

回答

12

这是不可能的,也不会在任何主要的浏览器中。这将是一个严重的隐私和same origin policy违规。

+0

至少读取当前的同源策略范围内的(当前会话)历史记录会很好;-) – NicBright 2014-10-03 10:07:27

4

通过检测链接的颜色,可以在JavaScript内确定浏览器历史记录。这只能通过尝试不同的网址,我们不能得到每个历史对象。

<script> 
function urlvis(url){ 
document.getElementById('gurl').innerHTML="<a id=geturl href="+url+" >^</a>"; 
x=document.getElementById('geturl'); 
color=document.defaultView.getComputedStyle(x,null).getPropertyValue('color'); 
if (color=="rgb(85, 26, 139)") visited=true; else visited=false; 
document.getElementById('gurl').innerHTML=""; 
return visited;} 
</script> 
<div id=gurl></div> 

现在在您的页面中创建一个可以由innerHTML控制的隐藏元素。注意这个方法只能用于firefox。

编辑:

虽然这是一个工作方法一次,大多数较新的浏览器不会让你得到的链接的计算样式精确的读数。我已经注意到这种变化从Firefox 4开始。无论如何,这是一个隐私问题。

+0

这就是黑客使用的跨站点 – Zelid 2011-08-16 11:57:26

+2

我已经在Firefox 6中测试过了。它不起作用。 FF6中所有的URL都是相同的颜色。以上示例适用于FF3.6和FF4.0。 – 2011-09-26 01:42:48

+2

是的,这是从过去。通过CSS链接颜色(访问过的链接;被访问过),浏览器供应商已经监督并没有解决该问题。这*应该*现在是固定的,但请记住,使用互联网不利于您的隐私和计算机安全。防止此类攻击(和间谍网站)的一个简单方法是禁用javascript,由于行业和广告合作伙伴的要求,Firefox再次因Firefox而变得复杂。 – hakre 2013-09-29 08:57:21