Запретить прокрутку веб-страницы при прокрутке внутри объекта Flash

Я уверен, что это частый вопрос, но нигде я не нашел ответа.

У меня есть Flash-объект, встроенный в длинную веб-страницу. Я прослушиваю событие MOUSE_WHEEL во Flash и соответствующим образом прокручиваю свой Flash-контент. Однако, когда я прокручиваю объект Flash, веб-страница также прокручивается.

Есть ли способ предотвратить такое поведение, т.е. заблокировать позицию прокрутки веб-страницы, когда объект Flash находится в фокусе? Я бы предпочел не использовать JavaScript.


person Cameron    schedule 13.08.2009    source источник


Ответы (2)


Я не думаю, что это возможно без JavaScript.

Вам нужно будет передать сообщение из Flash-фильма в браузер, используя ExternalInterface всякий раз, когда Flash-фильм меняет фокус.

Затем добавьте функцию JavaScript в ловушку страницы и съешьте событие колеса мыши:

if (window.addEventListener)
    /** DOMMouseScroll is for mozilla. */
    window.addEventListener('DOMMouseScroll', handleWheelEvent, false);
/** IE/Opera. */
window.onmousewheel = document.onmousewheel = handleWheelEvent;

function handleWheelEvent(e){
    e.preventDefault();
}
person Raleigh Buckner    schedule 14.08.2009
comment
Спасибо, я не знал, что вы можете отменять события в JavaScript - person Cameron; 15.08.2009

Вот отличное решение, не требующее JavaScript:

http://www.spikything.com/blog/index.php/2009/11/27/stop-simpting-flash-browser-scrolling/

(Технически он ДЕЙСТВИТЕЛЬНО использует JavaScript, но JavaScript внедряется Flash, поэтому вам не нужно ничего добавлять на HTML-страницу самостоятельно. Другими словами, единственный код, которым вам нужно управлять, - это AS3).

Кажется, это работает во всех протестированных мной браузерах.

person mattstuehler    schedule 13.04.2011