在Javascript中如何循环遍历“history”?

14
有没有一种方法可以在javascript中循环遍历“history”对象以找到特定页面的历史记录?
2个回答

15

出于安全原因,您不能使用JavaScript来转储浏览器的历史记录。

我的意思是您无法这样做。

// This does not work
for (i=0; i<window.history.length; i++) {
      alert(window.history[i]);
}

然而,我没有很好的解释为什么 history.go(n); 可行。


10
history.go(n) 是可以的,因为它不会提供有关用户历史记录的任何信息... 它只会将用户带回到该位置。 - TM.
当前、下一个和上一个属性呢?它们不能显示URL吗?谢谢。 - Mahesh Velaga
请问有人可以澄清我的问题吗?谢谢! - Mahesh Velaga
3
不,这些属性已经不再对任何浏览器的网页脚本可用。history.go() 不是一个安全问题,但它肯定会导致使用上的问题,应该尽量避免使用。 - bobince
1
@bobince说“永远不应该使用”?那么对于使用哈希浏览和历史记录进行导航的单页面Web应用程序呢?“永远”这个词太绝对了。它有其合理的用途,但是应该仔细考虑其使用。 - jcoffland

11
不行,因为这将使你基本上能够监视访问你网站的任何人的网络历史记录(你可以使用Javascript将此信息发送到你的服务器)。
你可以使用Javascript history对象的back(),forward()和go()方法将客户端重定向到其历史记录中的特定页面。 你只是不知道确切地重定向到哪里(除非使用go()将其重定向到URL而不是历史记录编号的情况)。

7
最好可以在当前的同源策略范围内阅读历史记录;-) - NicBright
@user3651406 我同意。很遗憾,您无法在您想要控制的域和网站上操纵重复记录的历史。 - mjs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接