【问题标题】:Get user's most visited sites in IE9 with javascript?使用 javascript 在 IE9 中获取用户访问次数最多的网站?
【发布时间】:2012-04-08 22:47:11
【问题描述】:

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

【问题讨论】:

    标签: javascript internet-explorer internet-explorer-9 browser-history


    【解决方案1】:

    您可以使用 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 限制仍然适用于本地文件。

    【讨论】:

      【解决方案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 并继续计数。

      【讨论】:

      • 谢谢,要添加到您的答案中,您可以更改 css 中的链接样式,以便颜色完全符合您的要求
      • @EfeOzturkoglu 并非在所有情况下,as seen here规则起源下。
      • 另一个主要缺点:现代浏览器现在阻止了这一点,因此您根本无法在 IE9+ 或当前版本的 Firefox、Chrome 等中使用它
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多