我知道当一个人通过 edge.create 方法从 Facebook 选项卡中单击“喜欢”按钮时,您可以捕获事件,但我想知道是否有一种方法可以捕获 Facebook 喜欢按钮在单击页面顶部,目的是能够找出我的粉丝页面中的哪个选项卡产生了点赞。
当页面重新加载时,我会知道该页面已被点赞,但我不知道点赞是从一个选项卡生成的,还是同一页面上的另一个选项卡生成的。
最佳答案
我能想到的唯一足够准确的解决方案如下:
使用第一个应用程序请求在服务器端启动 session 。 记住来自 signed_request 的 like 状态和它发出时的时间戳。
在您的选项卡应用程序中嵌入一个 javascript 间隔,每隔几秒向您的服务器发送一个 AJAX 请求。我想你已经走了 2 到最多 5 秒之间的东西。 AJAX 请求仅刷新 session 中的时间戳。
如果用户点击页面顶部的赞,现在,整个 Facebook 页面会重新加载 - 您的应用程序也会重新加载,您会收到一个新的签名请求,该请求的赞状态现在设置为 1。 查看您的 session > 之前的状态是 0 吗?是的?是时间戳最大值。 6-10 秒老?是的?好吧,这很可能是因为用户在该选项卡上喜欢该页面。
我讨厌 AJAX 间隔污染网络的解决方案(在有很多用户的大网站上,这会给您的服务器带来压力),但我想不出任何其他解决方案,因为没有其他方法可以跟踪如果用户仍在查看您的选项卡。如果间隔太长,用户将能够导航到墙或信息部分并喜欢那里的页面。如果他在这之后直接回到你的标签,你根本无法追踪他是否离开了标签......
另一种解决方案是监听 body.unload 事件并向服务器发出 AJAX 请求,告诉您用户已离开该选项卡,但该事件可能永远不会在某些浏览器或 AJAX 上触发请求速度不够快,无法在标签页卸载之前处理。另一方面,此解决方案会占用更少的用户网络资源和服务器性能资源。
这只是理论上的解决方案,必须首先进行测试!
关于events - 捕捉哪个标签被点赞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8161120/