2

これを試して。

Facebookのホームページ(Facebookフィード)のブラウザコンソールに次のコードを入力します。

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

次に、Webサイトの「メッセージ」または「イベント」セクションに移動します。ページ全体がリロードされず、新しいhtmlコンテンツがjavascriptで動的に挿入されることに注意してください。しかし、どういうわけかFacebookはをキャンセルしsetIntervalます。これは。でも発生しsetTimeoutます。

これはどのように起こっていますか?

4

1 に答える 1

2

Facebook がネイティブsetTimeoutsetInterval関数を独自のものでオーバーライドしていることが判明しました。setTimeoutこれは、ブラウザ コンソールに入力することで確認でき、通常のnative code関数とは異なる関数が返されます。したがって、FacebooksetTimeoutsはページ上のすべてにアクセスでき、サードパーティのコードによるものも含めて、新しいページにアクセスしたときに (または本当に必要なときに) すべてをクリアできます。

于 2012-11-17T01:41:51.240 に答える