2010-07-13 2 views
0

Я пытаюсь обрабатывать вещи на своем сайте при изменении размера окна, и у меня возникла проблема с Chrome, которую я не могу понять. Вот код, очень упрощена:Проблема с изменением размера окна для Chrome

<script language="javascript" type="text/javascript"> 
    window.onresize = function() 
     { 
      alert(1); 
      alert(2); 
      alert(3); 
      alert(4); 
     }; 
    }); 
</script> 

Когда я нажимаю восстановить окно (сделать меньше), он отлично работает (исполняющему дважды по какой-то причине). При максимизации окна предупреждения поступают в следующем порядке: 1, 2, 1, 2, 3, 4, 3, 4; или иногда 1, 1, 2, 3, 4, 2, 3, 4. В IE он работает нормально (выполняется три раза), а FF - штраф (выполняется только один раз). Я также пробовал это с эквивалентом jQuery $ (window) .resize (...); с тем же результатом. Я знаю, что javascript не многопоточен, но похоже, что это с такой ситуацией. У кого-нибудь есть идеи?

ответ

3

Это не так много одного против многопоточного, alert() вызова является одним из немногих вещей, которые запирают поток исполнения, так в то время как предупреждение вверх, другие вещи выстраиваются в очереди в фоновом режиме.

Если вы не использовали сигналы и вместо того, чтобы сделали console.log() или писали в страницу для вашей отладки, вы получите гораздо более последовательное поведение, чем при alert() вызовов ... которые действительно плохо для оценки нарезания резьбы или потому что они непосредственно вмешиваются и меняют их.

Смежные вопросы