0

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

你们是否知道这是否可行,或者对实现我的想法有什么想法?

4

2 回答 2

1

您可以调用history.go()一次。这就是你所能得到的。原因很简单,一旦你进入上一页,你的 javascript 就消失了。iframe 也不起作用,因为您无法在具有来自另一个域的页面的 iframe 中执行自己的 JS。阅读有关同源政策的更多信息。

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

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

我最熟悉 Chrome,所以我想象一个browserAction来启用/禁用脚本和一个执行重定向的内容脚本。其他潜在选项包括Greasemonkey (Firefox)、Tampermonkey (Chrome)、个性化 Web (Chrome) 脚本

于 2012-11-27T03:11:07.137 回答
1

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

这可能会使站点访问:

  1. 您仍在其他网站上登录的会话(如果他们将会话密钥存储在 URL 中,就像某些网站那样)
  2. 深入了解您执行的活动类型(您是站点 X 的版主吗?)
  3. 关于您感兴趣的内容的大量数据。

这不是标准机构或浏览器制造商认为用户有兴趣与所有人分享的东西。这就是为什么没有一个 API 可以遍历浏览器的整个历史。

@sachleen 已经提供了一个非常好的深入答案,如果您想构建此应用程序,如何解决单个浏览器的此限制。为了完整起见,我将简单地提及关键术语:“浏览器扩展”。:-)

于 2012-11-27T03:17:38.917 回答