Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как заблокировать отмену анимации GIF при нажатии на ESC? (https://javascript.ru/forum/events/34530-kak-zablokirovat-otmenu-animacii-gif-pri-nazhatii-na-esc.html)

kaf 09.01.2013 00:24

Как заблокировать отмену анимации GIF при нажатии на ESC?
 

вот так не помогает
window.onkeyup=function(e){
    if(e.keyCode==27){
        e.preventDefault ? e.preventDefault() : (e.returnValue = false);
    }
}

Deff 09.01.2013 00:28

Ваш пример некорректен - разные документы (скрипт во фрейме

<img src="http://scotsfinn.webs.com/white%20wolf.gif" border="0" alt=""/>


<script>
window.onkeyup=function(e){
    if(e.keyCode==27){
        e.preventDefault ? e.preventDefault() : (e.returnValue = false);
    }
}
</script>

dmitriymar 09.01.2013 00:33

http://learn.javascript.ru/keyboard-events
Цитата:

Сообщение от Deff
Ваш пример некорректен - разные документы (скрипт во фрейме

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

zebra 09.01.2013 00:45

Что-то я не понял магию, как именно останавливается анимация?:-?

kaf 09.01.2013 00:46

Можно, конечно, сделать свою анимацию по таймеру, но хотелось бы использовать более простой вариант с GIF.
А тут такая незадача...

kaf 09.01.2013 00:48

Цитата:

Сообщение от zebra (Сообщение 226146)
Что-то я не понял магию, как именно останавливается анимация?:-?

простым нажатием ESC

Deff 09.01.2013 01:02

kaf,
Hужно просто указать, что магия в FF, (* в Опере, к примеру такого нет

zebra 09.01.2013 01:24

Не понимаю. Все что происходит в функции, так это вызов preventDefault, как он может влиять на анимацию?

kaf 09.01.2013 22:03

Цитата:

Сообщение от Deff (Сообщение 226152)
kaf,
Hужно просто указать, что магия в FF, (* в Опере, к примеру такого нет

В IE тоже магия срабатывает

Цитата:

Сообщение от zebra (Сообщение 226158)
Не понимаю. Все что происходит в функции, так это вызов preventDefault, как он может влиять на анимацию?

Речь идет о GIF-анимации (не о JS-анимации), которая работает на уровне своего формата. Где-то в браузере заложена остановка GIF-анимации при нажатии ESC. Хотелось бы понять, можно ли это действие (по умолчанию?) заблокировать.

kaf 13.01.2013 12:48

Методом научного тыка оказалось, что блокировка GIF-анимации срабатывает на keydown. Cвой обработчик удобнее ставить на keyup, чтобы исключить обработку ситуации "зажатой" клавиши.
Этот пример корректно работает, если при нажатии ESC фокус находится в созданном iframe (просто кликаем предварительно в нем)
<img src="http://scotsfinn.webs.com/white%20wolf.gif" border="0" alt=""/>
<script>
window.onkeydown=function(e){
    if(e.keyCode==27){
        e.preventDefault ? e.preventDefault() : (e.returnValue = false);
    }
}
window.onkeyup=function(e){
    if(e.keyCode==27){
        //здесь можно поставить свой обработчик
        alert('ESC');
    }
}
</script>


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