WheelEvent#

WheelEvent.initWheelEvent()#

Metoda initWheelEvent() inicjuje dane zdarzenie wartościami przekazanymi do metody.

Składnia#

Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:

wheelEvent.initWheelEvent(type, bubbles, cancelable, view,
						  detail, screenX, screenY, clientX,
						  clientY, button, relatedTarget, modifiersList
						  deltaX, deltaY, deltaZ, deltaMode);
			

gdzie poszczególne człony oznaczają:

Na podstawie współrzędnych clientX i clientY implementacje mogą obliczać inne współrzędne, jak np. współrzędne celu lub inne rozszerzające właściwości zdarzeń myszy (np. pageX czy pageY).

Algorytm wywołania metody initWheelEvent(type, bubbles, cancelable, view, detail, screenX, screenY, clientX, clientY, button, relatedTarget, modifiersList, deltaX, deltaY, deltaZ, deltaMode) nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:

  1. Wykonaj inicjowanie z typem type, bąbelkowaniem bubbles oraz anulowaniem cancelable na obiekcie kontekstu, a następnie ustaw kolejno jego właściwość view na view, detail na detail, screenX na screenX, screenY na screenY, clientX na clientX, clientY na clientY, button na button, relatedTarget na relatedTarget, deltaX na deltaX, deltaY na deltaY, deltaZ na deltaZ, deltaMode na deltaMode oraz odpowiadające właściwości klawiszy modyfikujących wymienione w modifiersList (jeśli istnieją).

Inicjowanie zdarzeń metodą initWheelEvent() jest obowiązkowe w przypadku niezaufanych zdarzeń, przed ich wysłaniem za pomocą metody EventTarget.dispatchEvent(), które utworzone zostały za pomocą polecenia Document.createEvent(). Zdarzenia tworzone za pomocą konstruktora new WheelEvent(), i pochodnych, są inicjowane automatycznie. Także zaufane zdarzenia są inicjowane automatycznie przez daną implementacje.

W ramach uzupełnienia warto przeanalizować wady i zalety poszczególnych poleceń odpowiedzialnych za tworzenie niezaufanych zdarzeń.

Jeśli metoda initWheelEvent() jest wielokrotnie wywoływana przed wysłaniem zdarzenia, to pod uwagę brane jest ostatnie takie wywołanie. Jeśli metoda initWheelEvent() zostanie wywołana w trakcie propagacji zdarzenia (np. przez jakiś uchwyt zdarzenia), to nie powoduje ona żadnego efektu i musi zostać natychmiastowo zakończona.

Ze względów bezpieczeństwa zdarzenia modyfikowane przy użyciu metody initWheelEvent() muszą ustawiać wartość właściwości Event.isTrusted na boolowskie false.

Prosty przykład:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
<script>

	// Tworzymy nowe zdarzenie z domyślnymi wartościami
	var wheelEvent = document.createEvent("WheelEvent");

	document.write(wheelEvent); // [object WheelEvent]
	document.write("<br>");
	document.write(wheelEvent.type); // "" - pusty łańcuch
	document.write("<br>");
	document.write(wheelEvent.bubbles); // false
	document.write("<br>");
	document.write(wheelEvent.cancelable); // false
	document.write("<br>");
	document.write(wheelEvent.view); // null
	document.write("<br>");
	document.write(wheelEvent.detail); // 0
	document.write("<br>");
	document.write(wheelEvent.screenX); // 0
	document.write("<br>");
	document.write(wheelEvent.screenY); // 0
	document.write("<br>");
	document.write(wheelEvent.clientX); // 0
	document.write("<br>");
	document.write(wheelEvent.clientY); // 0
	document.write("<br>");
	document.write(wheelEvent.altKey); // false
	document.write("<br>");
	document.write(wheelEvent.ctrlKey); // false
	document.write("<br>");
	document.write(wheelEvent.metaKey); // false
	document.write("<br>");
	document.write(wheelEvent.shiftKey); // false
	document.write("<br>");
	document.write(wheelEvent.button); // 0
	document.write("<br>");
	document.write(wheelEvent.buttons); // 0
	document.write("<br>");
	document.write(wheelEvent.relatedTarget); // null
	document.write("<br>");
	document.write(wheelEvent.deltaX); // 0
	document.write("<br>");
	document.write(wheelEvent.deltaY); // 0
	document.write("<br>");
	document.write(wheelEvent.deltaZ); // 0
	document.write("<br>");
	document.write(wheelEvent.deltaMode); // 0
	document.write("<br>");
	document.write(wheelEvent.defaultPrevented); // false
	document.write("<br>");
	document.write(wheelEvent.isTrusted); // false
	document.write("<br>");
	document.write(wheelEvent.eventPhase); // 0
	document.write("<br>");
	document.write(wheelEvent.timeStamp); // liczba całkowita z wartością zależną od chwili uruchomienia przykładu
	document.write("<br>");
	document.write(wheelEvent.currentTarget); // null
	document.write("<br>");
	document.write(wheelEvent.target); // null

	document.write("<br><br>");

	// Inicjujemy zdarzenie własnymi wartościami
	wheelEvent.initWheelEvent("piesek", true, true, window,
				   69, 50, 100, 150,
				   200, 1, document.documentElement, "Alt Control Shift Meta",
				   5.1, 10.2, 15.3, 2)

	document.write(wheelEvent); // [object WheelEvent]
	document.write("<br>");
	document.write(wheelEvent.type); // piesek
	document.write("<br>");
	document.write(wheelEvent.bubbles); // true
	document.write("<br>");
	document.write(wheelEvent.cancelable); // true
	document.write("<br>");
	document.write(wheelEvent.view); // [object Window]
	document.write("<br>");
	document.write(wheelEvent.detail); // 69
	document.write("<br>");
	document.write(wheelEvent.screenX); // 50
	document.write("<br>");
	document.write(wheelEvent.screenY); // 100
	document.write("<br>");
	document.write(wheelEvent.clientX); // 150
	document.write("<br>");
	document.write(wheelEvent.clientY); // 200
	document.write("<br>");
	document.write(wheelEvent.altKey); // true
	document.write("<br>");
	document.write(wheelEvent.ctrlKey); // true
	document.write("<br>");
	document.write(wheelEvent.metaKey); // true
	document.write("<br>");
	document.write(wheelEvent.shiftKey); // true
	document.write("<br>");
	document.write(wheelEvent.button); // 1
	document.write("<br>");
	document.write(wheelEvent.buttons); // 7
	document.write("<br>");
	document.write(wheelEvent.relatedTarget); // [object HTMLHtmlElement]
	document.write("<br>");
	document.write(wheelEvent.deltaX); // 5.1
	document.write("<br>");
	document.write(wheelEvent.deltaY); // 10.2
	document.write("<br>");
	document.write(wheelEvent.deltaZ); // 15.3
	document.write("<br>");
	document.write(wheelEvent.deltaMode); // 2
	document.write("<br>");
	document.write(wheelEvent.defaultPrevented); // false
	document.write("<br>");
	document.write(wheelEvent.isTrusted); // false
	document.write("<br>");
	document.write(wheelEvent.eventPhase); // 0
	document.write("<br>");
	document.write(wheelEvent.timeStamp); // liczba całkowita z wartością zależną od chwili uruchomienia przykładu
	document.write("<br>");
	document.write(wheelEvent.currentTarget); // null
	document.write("<br>");
	document.write(wheelEvent.target); // null

</script>

Metodę initWheelEvent() pozostawiono ze względu na polecenie Document.createEvent(). Warto nadmienić, że po zakończeniu obsługi wszystkich faz zdarzenia może ono zostać ponownie wysłane. Dzięki metodzie initWheelEvent() można zmienić jego podstawowe parametry, co byłoby niemożliwe przy wykorzystaniu właściwości zdarzeń, ponieważ są one tylko do odczytu.

Na chwilę obecną jedynie w przeglądarce IE11 wszystko działa prawidłowo. Firefox nie obsługuje polecenia Document.createEvent("WheelEvent"), Chrome z kolei obsługuje, ale nie implementuje metody initWheelEvent().

Interfejs Web IDL#

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
void initWheelEvent(DOMString type, boolean bubbles, boolean cancelable,
		    Window? view, long detail, long screenX,
		    long screenY, long clientX, long clientY,
		    short button, EventTarget? relatedTarget, DOMString modifiersList
		    double deltaX, double deltaY, double deltaZ,
		    unsigned long deltaMode);

Specyfikacje i inne materiały

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

WheelEvent (H1) WheelEvent.initWheelEvent() (H2) Składnia (H3) Interfejs Web IDL (H3)