试试这个。
将此代码输入 Facebook 主页(您的 Facebook feed)上的浏览器控制台:
setInterval(function(){console.log('blah')}, 100)
然后导航至网站的“消息”或“事件”部分。请注意,整个页面不会重新加载,并且新的 html 内容是使用 javascript 动态插入的。然而,Facebook 以某种方式取消了 setInterval
。 setTimeout
也会发生这种情况。
这是怎么发生的?
最佳答案
事实证明,Facebook 正在用自己的函数覆盖 native setTimeout
和 setInterval
函数。您可以通过在浏览器控制台中输入 setTimeout
来查看这一点,它将返回一个与典型的 native code
函数不同的函数。因此,Facebook 可以访问页面上的所有 setTimeouts
,甚至是由第三方代码生成的,因此可以在您访问新页面时(或者他们真正需要的任何时候)清除它们。
关于javascript - Facebook 如何在进入新页面时设法杀死 javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13426604/