2012-11-17 54 views
2

試試這個。Facebook如何在轉到新頁面時殺死JavaScript?

類型的代碼到你的瀏覽器控制檯在Facebook上(你的Facebook飼料)的主頁:

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

然後導航到「信息」或網站的「事件」部分。請注意,整個頁面不會重新加載,並且新的html內容會通過javascript動態插入。然而,不知何故Facebook取消了setInterval。這也發生在setTimeout

這是怎麼發生的?

+0

當您主動打開消息等項目以避免定時器重新載入新內容時,它們是否可能會清除窗口對象上的所有間隔? – f0x

+1

@pst http://stackoverflow.com/questions/958433/how-can-i-clearinterval-for-all-setinterval第二個答案。 – f0x

+0

@pst是他們在做什麼? – user730569

回答

2

原來,Facebook正在用自己的功能覆蓋原生的setTimeoutsetInterval功能。您可以在瀏覽器控制檯中輸入setTimeout來查看此功能,它將返回與典型功能native code不同的功能。因此,Facebook可以訪問頁面上的所有setTimeouts,即使是第三方代碼也可以訪問,因此可以在訪問新頁面(或者他們真正想要的時間)時將其全部清除。

+0

+1發佈原因。 – 2012-11-17 04:21:26