Zdarzenia#

Typ click#

Typ:click
Interfejs:MouseEvent
Sync / Async:Sync
BąbelkowanieTak
Zaufane celeElement
AnulowanieTak
Domyślna akcjaZmienna
Kontekst
(zaufane zdarzenia)

Zdarzenie typu click musi zostać wysłane przez aplikację kliencką dla wierzchniego celu zdarzenia wskazywanego przez urządzenie wskazujące, kiedy użytkownik wciska i zwalnia główny przycisk urządzenia wskazującego, lub w inny sposób aktywuje urządzenie wskazujące symulując takie działanie. Metoda aktywacji przycisku myszy zależy od urządzenia wskazującego i konfiguracji środowiska, przykładowo może zależeć od położenia ekranu lub opóźnienia pomiędzy wciśnięciem a zwolnieniem przycisku urządzenia wskazujące.

Zdarzenie typu click, podobnie jak zdarzenie dblclick, powinno być odpalane jedynie dla głównego przycisku urządzenia wskazującego (tzn. kiedy wartością MouseEvent.button jest 0 i wartością MouseEvent.buttons jest 1). Przyciski dodatkowe (jak środkowy lub prawy przycisk w standardowej myszy) nie mogą odpalać zdarzeń click.

Zdarzenie typu click może być poprzedzane zdarzeniami mousedown i mouseup na tym samym elemencie, pomijając zmiany między innymi rodzajami węzłów (np. tekstowymi). W zależności od konfiguracji środowiska zdarzenie click może być wysyłane jeśli jedno lub większa liczba zdarzeń typu mouseover, mousemove i mouseout występuje pomiędzy wciśnięciem a zwolnieniem przycisku urządzenia wskazującego. Zdarzenie click może również poprzedzać zdarzenie dblclick.

Dla przykładu, jeśli użytkownik wciska przycisk myszy na węźle tekstowym będącym dzieckiem elementu <p>, któremu ustawiono dużą wartość właściwości line-height, a następnie nieznacznie przesuwa mysz, tak że nie znajduje się nad powierzchnią zawierającą tekst, ale nadal jest w obrębie bloku objętego przez element <p> (tj. wskaźnik jest pomiędzy liniami tego samego bloku tekstowego, ale nie na węźle tekstowym), i w ostateczności zwalnia przycisk myszy, to zdarzenie typu click prawdopodobnie zostanie wywołane (jeśli mieści się w czasowej histerezie dla click), gdyż użytkownik wciąż przebywa w obrębie tego samego elementu. Należy pamiętać, że zdarzenia click generowane przez aplikacje klienckie nie są wysyłane do węzłów tekstowy.

Zdarzenie typu click, oprócz naturalnego powiązania z urządzeniami wskazującymi, musi być również wysyłane w ramach aktywacji elementu, jak opisano w podrozdziale "Aktywujące wyzwalacze i zachowania".

W celu zapewnienia maksymalnej dostępności autorzy zawartości są zachęcani do korzystania ze zdarzenia typu click, kiedy planują kontrolować aktywujące zachowania, zamiast innych typów zdarzeń urządzenia wskazującego, jak np. mousedown lub mouseup, które są bardziej zależne od rodzaju stosowanego urządzenia. Chociaż zdarzenie click jest kojarzone z urządzeniami wskazującymi (np. myszą), to kolejne ulepszenia w implementacjach rozszerzyły jego zastosowanie, i w tej chwili może być uznawane za typ zdarzenia aktywującego element niezależnie od używanego urządzenia.

Domyślna akcja dla zdarzenia typu click różni się w zależności od celu zdarzenia oraz wartości wskazywanej we właściwości MouseEvent.button lub MouseEvent.buttons. Typowymi domyślnymi akcjami dla zdarzenia click są:

Anulowanie zdarzenia typu click nie ma wpływu na odpalenie zdarzenia dblclick.

Prosty przykład:

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

<head>

	<style>

		input:focus {outline: 5px solid green;}

	</style>

</head>

<body>

	<p>Kliknij (ewentualnie podwójnie) głównym przyciskiem myszy w jedną z poniższych kontrolek by uzyskać szczegółowe informacje dla zdarzenia.</p>
	<input id="input1" type="text" value="Pierwsza kontrolka">
	<input id="input2" type="text" value="Druga kontrolka">
	<input id="input3" type="text" value="Trzecia kontrolka">

	<p style="color: blue;">Szczegółowe informacje dla przechwyconego zdarzenia:</p>
	<p id="info"></p>

	<script>

		var input1 = document.getElementById("input1");
		var input2 = document.getElementById("input2");
		var input3 = document.getElementById("input3");
		var info = document.getElementById("info");

		function readInfo(e){

			var data = "Interfejs: " + e
				+ "<br>" + "e.type: " + e.type
				+ "<br>" + "e.target: " + e.target
				+ "<br>" + "e.target.value: " + e.target.value
				+ "<br>" + "e.relatedTarget: " + e.relatedTarget;

			if (e.relatedTarget && e.relatedTarget.tagName.toLowerCase() == "input"){
				data += "<br>" + "e.relatedTarget.value: " + e.relatedTarget.value;
			}

			data += "<br>" + "e.detail: " + e.detail
				+ "<br>" + "e.button: " + e.button
				+ "<br>" + "e.currentTarget: " + e.currentTarget
				+ "<br>" + "e.eventPhase: " + e.eventPhase + "<br><br>";

			info.innerHTML = data + info.innerHTML;

		}

		input1.addEventListener("click", readInfo, false);
		input1.addEventListener("dblclick", readInfo, false);

		input2.addEventListener("click", readInfo, false);
		input2.addEventListener("dblclick", readInfo, false);

		input3.addEventListener("click", readInfo, false);
		input3.addEventListener("dblclick", readInfo, false);

	</script>

</body>

</html>

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

Zdarzenia (H1) Typ click (H2) Specyfikacje i inne materiały (H3)