javascript - Facebook 如何在进入新页面时设法杀死 javascript?

标签 javascript facebook settimeout setinterval

试试这个。

将此代码输入 Facebook 主页(您的 Facebook feed)上的浏览器控制台:

setInterval(function(){console.log('blah')}, 100)

然后导航至网站的“消息”或“事件”部分。请注意,整个页面不会重新加载,并且新的 html 内容是使用 javascript 动态插入的。然而,Facebook 以某种方式取消了 setIntervalsetTimeout 也会发生这种情况。

这是怎么发生的?

最佳答案

事实证明,Facebook 正在用自己的函数覆盖 native setTimeoutsetInterval 函数。您可以通过在浏览器控制台中输入 setTimeout 来查看这一点,它将返回一个与典型的 native code 函数不同的函数。因此,Facebook 可以访问页面上的所有 setTimeouts,甚至是由第三方代码生成的,因此可以在您访问新页面时(或者他们真正需要的任何时候)清除它们。

关于javascript - Facebook 如何在进入新页面时设法杀死 javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13426604/

相关文章:

javascript - HTML <select> on select 事件的名称是什么?

javascript - FB Share 对话框图片未显示

javascript - 如何聚焦隐藏的输入字段

javascript - 在性能问题之前有多少个并发 setTimeouts?

javascript - 缺少回调时 `await promisify(setTimeout)(ms)` 是如何工作的?

javascript - jQuery 基于滚动的淡入和淡出

iphone - Facebook iOS SDK - 向 Facebook 用户发送应用程序请求

android - 未找到客户端 token ,请设置客户端 token

iphone - 避免 Facebook 单点登录

node.js - node.js 中的 setTimeout 是如何实现的