Вся эта ситуация очень странная. Единственный сценарий, который приходит на ум, где он имеет какой-либо смысл, - это сценарий, в котором браузер пытается «сгладить» период самовосстановления setTimeouts, так же как и для setInterval, и код, который делает это, фактически смешивает таймеры в разных окнах с каждым другой.
Я не знаю, возможно ли это, особенно с участием Facebook, но интересным тестом было бы дать каждому экземпляру случайное имя для функции countDown
и посмотреть, имеет ли это какое-то значение, например:
<?php $timerTag = rand(1, 1000); ?>
function countDown<?php echo $timerTag ?>() {
...
setTimeout(function() { countDown<? php echo $timerTag ?>() }, 1000);
}
countDown<?php echo $timerTag ?>();
Если это изменит наблюдаемое поведение, это аргументирует сценарий, который я имею в виду. (И, возможно, предоставляет способ решения проблемы.)