Как остановить одновременную прокрутку колесика мыши в браузере и SWF в AS3?

По сути, у меня есть флэш-контент, который прокручивается колесиком мыши. Он работает нормально, если в браузере нет другого контента, такого как полоса прокрутки браузера - в этом случае и окно браузера, и мой SWF прокручиваются колесом мыши. Есть ли способ исправить это поведение?

Здесь задан аналогичный вопрос:

отключить прокрутку колесика мыши при наведении курсора на приложение Flex?

ссылается на решение, о котором написано в блоге здесь:

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

Но решение работает не во всех браузерах! Хотя он работает в некоторых браузерах Windows, он совсем не работает в Mac OS X - он регистрирует события колесика мыши в Firefox, но они не запускаются вообще в Chrome и Safari.

Теперь я знаю, что (согласно официальной документации Adobe InteractiveObject) колесо мыши предположительно поддерживается только в системах 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);

Этот кот находится по крайней мере на правильном пути, или есть лучше (т.е.полнофункциональное) решение?

11
задан Community 23 May 2017 в 12:16
поделиться