将鼠标悬停在Stackoverflow上的标记上时,会出现一个工具提示,如下所示。这可能是通过jquery.append实现的,因为它在HTML文档的最末端插入了HTML代码。 在每次悬停事件后,经过一段时间的延迟后,会发出一个AJAX请求,可能是通过jquery.load(...)
发送到webapps.stackexchange.com的url查询例如是_ = 1318962590136,这是一个动态ID。
工具包的有效负载是HTML,如下所示:
<div><div class="tm-heading">...</div></div><span>.......</span>
离开标记后,将删除动态加载的HTML。 css样式已经存在于stackoverflow站点的加载的css表中。
<a>
链接元素。似乎只宣布了mousedown事件(通过Chrome检查)。JavaScript-DeObfuscator提供了一些线索:事件监听器也是动态添加和删除的......
function (a, b, c) {
a.removeEventListener && a.removeEventListener(b, c, !1);
}
答案 0 :(得分:2)
仅在用户触发悬停事件时更新数据,这意味着您不必每隔x秒钟不断查询数据库。这种方法完全浪费资源,特别是当您需要极其最新的信息时,可能很容易每秒呼叫服务器。
但是更好的方法(比你在问题中谈到的方法更好)是一种名为Comet的方法。 Comet简单表示客户端向服务器发出请求,然后等待服务器响应(即,当服务器上的数据被更新时)。这意味着只有在有更新数据要推送到客户端时才会调用服务器。这就是(我相信)Facebook的工作原理。