Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   почему событие срабатывает более одного раза (https://javascript.ru/forum/dom-window/33005-pochemu-sobytie-srabatyvaet-bolee-odnogo-raza.html)

garisson 07.11.2012 09:55

почему событие срабатывает более одного раза
 
Подскажите почему в данном коде при прокрутке именно нажатием мыши на стрелочку скролла событие выполняется несколько раз, в отличие от прокрутки мыши или двигая ползунок мышкой?

<select multiple="" name="book" size="7">
<option>12313</option>
<option>12313</option>
<option>12313</option>
<option>12313</option>
<option>12313</option>
<option>12313</option>
<option>12313</option>
<option>12313</option>
<option>12313</option>
<option>12313</option>
<option>12313</option>
<option>12313</option>
<option>12313</option>
<option>12313</option>
<option>12313</option>
<option>12313</option>
<option>12313</option>
<option>12313</option>
<option>12313</option>
<option>12313</option>
<option>12313</option>
</select>
<script event="onscroll" for="book">
var book=document.getElementById("book");
if(book.scrollTop == book.scrollHeight - book.clientHeight)
{
alert("book.scrollTop="+book.scrollTop+", book.scrollHeight="+book.scrollHeight+", book.clientHeight="+book.clientHeight);
}
</script>

Slavenin 07.11.2012 17:25

очевидно, что так сделаны браузеры, что при удерживании кнопки мыши на стрелке прокрутки, прокрутка идет по одному элементу за раз но с большой скоростью, поэтому человеческий глаз ее не воспринимает, а вот js отлавливает

bes 07.11.2012 23:02

Цитата:

Сообщение от garisson
<script event="onscroll" for="book">

о, боже, до этой темы я этого не знал, и судя по тому, что это работает только в IE и информация об этом мне с трудом встретилась, и слава богу :)

UPD: интересует тот же вопрос http://javascript.ru/forum/css-html-...ga-script.html
Цитата:

Сообщение от Kolyaj
Извращение это сам способ <script event="" for="">, я вообще не понимаю, где вы его отрыли.


Your 08.11.2012 05:22

А зачем так делать?


Часовой пояс GMT +3, время: 10:55.