0

我正在制作一个在本地运行的 html 文件,以防万一。它只需要在IE9上运行,但如果它可以在其他浏览器上运行就更好了。我需要获取用户最常访问的网站,这样我就可以像 IE9 中的默认新标签页一样显示它们。如果我也能得到最近的历史,那就太好了。这些是可能的还是我必须使用插件?

4

4 回答 4

3

您可以使用 javascript 获取一些历史信息,但这基本上仅限于该站点是否被访问过,并且不会为您提供日期或频率。它也已在一些现代浏览器中被阻止。更多信息在这里:

http://blog.mozilla.com/security/2010/03/31/plugging-the-css-history-leak/

http://blogs.msdn.com/b/ieinternals/archive/2009/06/17/csshistoryprobing.aspx

即使是本地 html 文件也不会为您提供其他信息,javascript 沙箱和 api 限制仍然适用于本地文件。

于 2012-04-08T23:01:02.323 回答
2

虽然你不能得到“访问量最大的”,但你可以得到那些已经访问过的。

该过程是您需要准备一长串域。然后在您的页面中,加载一个 iframe,将这些链接放在 DOM 上。iframe 是必需的,这样您就可以在没有任何样式的情况下加载页面,远离您的主页。这样我们就可以看到我们将使用的默认链接颜色。

现在您在 iframe 中有一个带有一堆链接的空白文档,下一步是什么?你让 JavaScript 遍历链接,检查它们是蓝色还是紫色,明白我的意思吗?这意味着如果该链接的颜色为蓝色,则表示尚未访问过。如果它是紫色的,那么它是被访问过的。并且由于您的 iframe 和父页面属于同一域,因此父页面可以在 iframe 中获取“统计信息”。

这种方法的缺点是:

  1. 如果用户更改浏览器本身中已访问和未访问链接的默认颜色。您正在对颜色进行硬编码。如果该用户发生变化,您将无法获得任何好的统计数据。

  2. 您仅限于您的链接列表。虽然可以加。

  3. 它耗尽了 DOM。假设您有 1000 个要检查的 url,您必须将 1000 个<a>标签附加到空白处<iframe>,然后让 JavaScript 遍历所有这些标签。

  4. 确切的链接。如果您在 中阅读新闻yahoo.com/news/etc....,则与yahoo.com不会被拾取的新闻不同。理想情况下,您只需要列出顶级域。

  5. 你没有得到“访问次数”。您只知道访问了哪些域,但不知道访问频率。但是,您可以做的是,在“新标签页”中,您可以将用户点击的链接存储在 cookie 中。例如,如果您google.com在“新标签页”中有用户点击它,则在 cookie 中增加 Google 的计数,然后转到 google。下次加载“新标签页”时,请阅读该 cookie 并继续计数。

于 2012-04-08T23:24:05.977 回答
1

您正在寻找的功能不存在,并且将是一个危险的功能,不应该成为任何浏览器的一部分。如果您能够阅读用户最近的历史记录,那么任何其他网站都可以这样做。出于隐私原因,您访问的网站会隐藏您的历史记录。

于 2012-04-08T22:52:47.800 回答
0

万一有人遇到这个问题,我可以通过使用 JS History Objects 来实现提问者正在寻找的东西。它提供了一系列用户历史记录,计数排序可以返回网站列出的频​​率,为您提供用户访问次数最多的网站。

于 2017-06-19T16:05:02.450 回答