【问题标题】:How does a webpage determine if/when something is viewed?网页如何确定是否/何时查看某些内容?
【发布时间】:2013-06-29 01:55:42
【问题描述】:

我正在寻求了解确定何时查看网页特定部分的代码和函数(仅用于理解)。

例如,在 StackExchange 网站上,它会确定用户何时已完全阅读“关于”页面(并为此授予徽章)。什么功能/代码/语言正在关注这个?

或者至少,我如何跟踪和/或确定此函数在页面源中的位置?

【问题讨论】:

  • 我打赌他们正在根据容器的高度查看滚动位置。
  • @epascarello 是的,确切地说......而且可能还有计时器(一个人无法在一秒钟内阅读页面,但一个人可以快速向下滚动)
  • 逻辑由您根据您选择的任何标准来定义。您可以检查用户是否滚动到页面底部。您可以测量滚动位置检查点之间花费的时间,以确定它们是否看起来像是在阅读,或者它们是否只是经过压缩,您可以使用一个简单的计时器,表示它们在页面上停留了 2 分钟。您的选择。
  • 所以 javascript 正在这样做......
  • Stack Overflow 使用 jQuery 来跟踪您的滚动过程并为 about 页面的窗格设置动画。当最后一个窗格动画(徽章)时,页面 POST-pings http://stackoverflow.com/about/read 发送 StackExchange.options.user.fkey 的值作为有效负载数据。如果你将this mess 扔进jsbeautifier.org 并查看第231 行,你会看到POST。

标签: javascript css ajax browser web


【解决方案1】:

您可以使用 JavaScript 来检测用户在页面上滚动了多远,如果他们已经滚动超过某个点(比如文章的 80%),您可以触发 AJAX 请求,该请求会记录用户拥有滚动过去。

jQuery 中的快速示例:

$('body').scroll(function () {
    if($(this).scrollTop() > 1000) {
        // Fire off AJAX request
    }
});

没有对此进行测试,您需要将 1000 更改为像素数量,直到您到达文章中的某个元素,以便它适用于不同的文章长度。

【讨论】:

    猜你喜欢
    • 2012-05-04
    • 1970-01-01
    • 2020-04-14
    • 2011-04-01
    • 1970-01-01
    • 2012-02-05
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多