Как запустить событие колеса мыши в Firefox с помощью JavaScript?

Я пытаюсь провести автоматическое тестирование с помощью WebDriver, но в настоящее время он не может имитировать события колесика мыши. В качестве обходного пути я пытаюсь запустить эти события с помощью JavaScript. Я все время экспериментирую с колесом на прямой HTML-странице прямо сейчас, а не в рамках WebDriver.

Я специально пытаюсь запустить событие колесика мыши на прокручиваемом элементе div.

Пока что я смог сделать это с Chrome и IE9, но я не могу заставить что-либо работать в Firefox (5.x).

Я использую следующий кросс-браузерный код, чтобы определять, когда запускаются события колесика мыши , который я вытащил из сети. Этот код может улавливать событие во всех браузерах, когда я прокручиваю колесо мыши внутри созданного мной прокручиваемого div (id = 'view').

<script type="text/javascript">
  function wheel(event) {
    var delta = 0;
    if (!event) {
      event = view.event;
    }
    if (event.wheelDelta) {
      delta = event.wheelDelta / 120;
    }
    else if (event.detail) {
      delta = -event.detail / 3;
    }

    alert(delta);
  }

  var view = document.getElementById('view');

  if (view.addEventListener) {
    view.addEventListener('DOMMouseScroll', wheel, false);
  }

  view.onmousewheel = wheel;
</script>

Приведенная ниже функция при вызове может запускать колесо мыши. в Chrome и IE9, и обрабатывается указанным выше обработчиком с ожидаемым поведением.

function ChromeWheel () {
  var evt = document.createEvent("MouseEvents");
  evt.initEvent('mousewheel', true, true);
  evt.wheelDelta = 120;
  view.dispatchEvent(evt);
}

Конечно, это не работает для Firefox. Я нашел существующую документацию слишком скудной и запутанной, чтобы понять, как FF справляется с этим. Может ли кто-нибудь показать мне минимум для запуска события колесика мыши в Firefox с дельтой колесика (помещенной там, где его ожидает FF), чтобы мой обработчик подхватил его?

19
задан mercator 13 April 2012 в 12:39
поделиться