Я реализую интерфейс перетаскивания с помощью Mootools, где создается призрачная копия перетаскиваемого элемента и перемещается с помощью мыши. Я хочу, чтобы пользователь мог использовать колесико мыши для прокрутки, удерживая этот элемент-призрак. Проблема заключается в том, что сам призрак поглощает событие колесика мыши, заставляя его не прокручивать страницу позади него (в данном случае это отдельный div с полосой прокрутки).
В Firefox я исправил это, применяя стиль «pointer-events: none» к призраку, который заставляет событие mousewheel проходить прямо так, как я хочу. Но, похоже, мне нужно другое решение для IE. Я планировал перехватывать события mousewheel на элементе-призраке и перенаправлять их в контейнерный div, но я не могу заставить новое событие вызывать стандартное поведение mousewheel (то есть прокручивать div). Кто-нибудь знает, как мне это сделать?
Вот очень простой пример того, о чем я говорю: http://jsfiddle.net/jqL8Z/3/
Обратите внимание, что при наведении указателя мыши на «Элемент перетаскивания» страница не прокручивается. Это потому, что прокрутка является частью переполнения основного div, в то время как поле перетаскивания не является членом этого div, поэтому его события мыши будут пузыриться до тела. Я не хочу делать его членом div, потому что тогда он становится невидимым при перетаскивании за пределы этого div.
Я попробовал следующий код, чтобы перехватить и перенаправить событие:
textClone.addEvent('mousewheel', function(e) {
var mouseWheelEvent = document.createEvent('MouseEvents');
mouseWheelEvent.initMouseEvent('mousewheel', true, true, window, e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget);
treeDiv.dispatchEvent(mouseWheelEvent);
});
Но не повезло, чего-то еще не хватает.