使用历史对象的Javascript概念

时间:2012-11-27 02:57:51

标签: javascript arrays history concept

我有兴趣制作一个网站,当访问者浏览访问者的整个网络历史记录时。我计划使用JavaScript来获取每个观看者计算机上的历史记录,并根据它们的数量以不同的速度对其进行动画制作。我的想法是使用history.length来确定访问者历史记录的长度,然后使用history.go()在整个网络历史记录中导航-1,-2,-3等。我认识到加载时间会很大,但是现在我只是想通过这个概念来思考。 This相关的问题似乎就像我将用于代码的基础一样,但是,我不明白为什么他们会描述这种方法不起作用。我是一名对JavaScript很陌生的学生。

你们是否知道这是否有用,或者有任何关于如何实现我的想法的想法?

2 个答案:

答案 0 :(得分:1)

您可以拨打history.go()一次。这就是你所能得到的。原因很简单,一旦你在上一页,你的javascript就消失了。由于您无法在具有来自其他域的页面的iframe中执行您自己的JS,因此iframe将无法工作。阅读same origin policy了解更多相关信息。

我能想到的唯一真正的解决方案是浏览器扩展。这样做的原因在于你的JS可以在多个站点中持续存在。您可能只需要在每个页面中执行以下操作的用户脚本:

  • 检查变量以查看功能是否已启用
  • 如果是,请在超时后调用history.go(-1)(以控制速度)

我对Chrome最熟悉,所以我想象一个browserAction启用/禁用脚本以及执行重定向的content script。其他可能的选项包括Greasemonkey(Firefox),Tampermonkey(Chrome),Personalized Web(Chrome)脚本

答案 1 :(得分:1)

如您所链接的问题所述,JavaScript和/或DOM无法访问整个浏览器历史记录,因为这会严重侵犯隐私权。想象一下,访问一个网站,让他们能够知道您在该浏览器中访问过的每个网站

这可能会让网站访问:

  1. 您仍然在其他网站上登录的会话(如果他们将会话密钥存储在URL中,就像某些网站那样)
  2. 了解您执行的活动类型(您是X站点的主持人吗?)
  3. 关于您感兴趣的内容的大量数据。
  4. 这不是标准组织或浏览器制造商认为用户有兴趣与所有人分享的内容。这就是为什么没有API来浏览浏览器的整个历史记录。

    @pachleen已经提供了一个非常好的深入答案,如果你想构建这个应用程序,你可以如何解决个别浏览器的这个限制。为了完整起见,我只想提一下关键术语:“浏览器扩展”。 : - )