2013-01-06 2 views
0

в моем HTML:ie8 OnResize событие, выпустив дважды

<body onresize="doSomething();"> 

У меня есть это в моей JavaScript:

function doSomething() { 
    alert(1); 
    // it doesn't actually have alert(1), but this is just for demonstration 
} 

Когда я изменить размер окна браузера (дважды щелкнув его название), событие дважды срабатывает в IE8, тем самым испортив функцию.

Кто-нибудь знает, почему и как этого можно избежать? благодарим заранее!

+2

Почему это вызывает проблемы в вашем приложении? –

+0

Он не стреляет только дважды, он стреляет все время, когда происходит изменение размера (как в каждом браузере). – Teemu

ответ

3

Вы найдете, что если вы «изменяете размер вокруг» окна браузера, случайно перемещая область перетаскивания в нижнем правом углу, событие onresize срабатывает повторно.

Дело в том, что это довольно спорный вопрос, что представляет собой изменение размера окна. Вам придется принять, что это дико отличается от браузеров и ОС.

Рецептуры для обработки, которые включают отмену, если установлены, затем установка таймера (window.setTimeout) на событие изменения размера и выполнение реального изменения размера при срабатывании таймера.

Если ваш onresize не слишком дорог, вы должны просто создать его таким образом, чтобы не беспокоиться о повторном вызове.

+0

Это дорого (~ 100 мс). проблема возникает даже при двойном щелчке по окну, не говоря уже о перетаскивании – MIrrorMirror

+0

Итак, вам нужно объединить потенциальное множество событий в один - решение таймера хорошо работает для нас (250 мс - хорошая отправная точка) –

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