хром диспетчерское колесо события

Я пытаюсь отправить событие колеса в хроме, но все еще не могу этого сделать. Я использую объект WheelEvent, но кажется, что просто не могу его правильно "инициировать". Что бы я ни делал, дельта всегда равна 0. Я просмотрел спецификация, но не помогает. Что еще интереснее, я зафиксировал событие, когда я действительно прокручивал колесико мыши, и попытался отправить это событие, но снова дельта была равна 0. Кто-нибудь сталкивался с такой проблемой? Может это баг? Любая помощь будет здорово!

//dispatching the wheel event
var evt = document.createEvent("WheelEvent");
evt.initEvent("mousewheel", true, true, null, 0, 0, 0, 0, 0, false, false, false, false, 0, null, -120);
window.dispatchEvent(evt)

// catching the wheel event
window.addEventListener('mousewheel', callback, true);
callback = function(evt){
       console.log(evt)
}

person bellpeace    schedule 20.07.2011    source источник
comment
Не могли бы вы дать нам код. Как вы регистрируете прослушиватель событий или просто устанавливаете обратный вызов? Как вы организуете мероприятие?   -  person Peter    schedule 20.07.2011
comment
Я добавил код. Событие перехватывается, но страница не прокручивается, потому что дельты равны 0.   -  person bellpeace    schedule 20.07.2011
comment
Хорошо, я нашел причину. Я использовал неправильную функцию инициализации. Правильный вариант: это . Но все равно моя страница отказывается прокручиваться вниз.   -  person bellpeace    schedule 20.07.2011
comment
@bellpeace, ты когда-нибудь это понял? И какая правильная функция инициализации? К сожалению, ваша ссылка мертва.   -  person Andrew B.    schedule 19.10.2012
comment
@AndrewB., я добавил ответ.   -  person bellpeace    schedule 21.10.2012


Ответы (1)


Сначала мне больше не нужна была эта функциональность, но недавно я вернулся к этой проблеме и нашел способ правильно отправить событие колеса в Chrome. Извините за задержку, я совсем забыл об этой проблеме. Код выглядит следующим образом:

var evt = document.createEvent("WheelEvent");
evt.initWebKitWheelEvent(deltaX, deltaY, window, screenX, screenY, clientX,
                        clientY, ctrlKey, altKey, shiftKey, metaKey);
node.dispatchEvent(evt);

Дополнительную информацию можно найти здесь. Надеюсь это поможет.

person bellpeace    schedule 19.10.2012
comment
Это больше не работает, поскольку оно было удалено из Chrome: groups.google.com/a/chromium.org/forum/#! searchin/blink-dev/ - person Micha Schwab; 28.07.2017