По существу, у меня есть Flash-контент, который прокручивается на колесике мыши. Он отлично работает, если в браузере нет другого контента, так что панель прокрутки браузера включена - если это так, как окно браузера, так и мой SWF-свиток на колесике мыши. Есть ли способ исправить это поведение?
Аналогичный вопрос задан здесь:
отключить прокрутку колесика мыши при перемещении курсора по гибкому окну.
который ссылается на решение, размещенное в блоге:
http://www.spikything.com/blog/index.php/2009/11/27/stop-simultaneous-flash-browser-scrolling/
Но решение не работает на всех браузерах! Хотя он работает в некоторых браузерах Windows, он совсем не работает на Mac OS X - он регистрирует события колесика мыши в Firefox, но их вообще не запускают в Chrome и Safari.
Теперь я знаю, что (в официальном документе Adobe InteractiveObject docs) колесо мыши, предположительно, поддерживается только в системах Windows, но событие по-прежнему запущено по умолчанию в Mac OS X. Является ли это одновременной ошибкой прокрутки причиной, по которой она не поддерживается?
Изменить: добавление дополнительной информации о решении выше...
Обратите внимание, что приведенное выше решение в основном использует ExternalInterface для отправки следующего JavaScript в функцию "eval":
var browserScrolling;
function allowBrowserScroll(value) {
browserScrolling = value;
}
function handle(delta) {
if (!browserScrolling) {
return false;
}
return true;
}
function wheel(event) {
var delta = 0;
if (!event) {
event = window.event;
}
if (event.wheelDelta) {
delta = event.wheelDelta / 120;
} else if (event.detail) {
delta = -event.detail / 3;
}
if (delta) {
handle(delta);
}
if (!browserScrolling) {
if (event.preventDefault) {
event.preventDefault();
}
event.returnValue = false;
}
}
if (window.addEventListener) {
window.addEventListener('DOMMouseScroll', wheel, false);
}
window.onmousewheel = document.onmousewheel = wheel;
allowBrowserScroll(true);
Является ли эта кошка хотя бы на правильном пути или есть лучшее (то есть полностью функциональное) решение?