Wie Feuer-Maus-Rad-event im Firefox mit JavaScript?

Ich versuche zu tun, automatisiertes testen mit WebDriver, aber es hat derzeit nicht die Fähigkeit, zu simulieren Mausrad-Ereignisse. Als workaround versuche ich diese Ereignisse ausgelöst, die mit JavaScript statt. Ich mache alle meine Rad zu Experimentieren, auf einer geraden HTML-Seite, in die nicht innerhalb der WebDriver-framework.

Bin ich speziell versucht, Feuer-Maus-Rad-event auf einem scrollbaren div-element.

Bisher habe ich in der Lage, dies zu tun mit Chrome und IE9, aber ich kann nicht scheinen, um alles zu funktionieren, im Firefox (5.x).

Ich bin mit dem folgenden cross-browser-code zu erkennen, wenn die Mausrad-Ereignisse ausgelöst werden, die ich snagged aus dem Netz. Dieser code ist in der Lage zu Holen die Veranstaltung in allen Browsern, wenn ich das Mausrad innerhalb der scrolling-div habe ich erstellt (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>

Folgende Funktion, wenn Sie aufgerufen wird, ist in der Lage, Feuer mit der Maus-Rad-event in Chrome und IE9, und wird aufgegriffen in der oben genannten handler, die das erwartete Verhalten.

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

Natürlich, es funktioniert aber nicht mit Firefox. Ich habe festgestellt, die vorhandene Dokumentation zu spärlich und verwirrend zu wissen, wie die FF diese Aufgabe übernimmt. Kann jemand mir zeigen, das absolute minimum, um das Feuer ein Maus-Rad-event in Firefox mit einem Rad delta (dort platziert, wo FF es erwartet), so dass mein handler wird es abholen?

InformationsquelleAutor der Frage Justin Aquadro | 2011-07-18

Schreibe einen Kommentar