MouseEvent#
MouseEvent.buttons#
Właściwość buttons
zwraca liczbę całkowitą w postaci maski bitowej, która reprezentuje stany wszystkich przycisków w chwili wysłania danego zdarzenia. Właściwość jest tylko do odczytu.
Składnia#
Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:
var whatButtons = mouseEvent.buttons;
gdzie poszczególne człony oznaczają:
whatButtons
- liczba całkowita będąca maską bitową, w której poszczególne bity oznaczają stan każdego przycisku.mouseEvent
- zdarzenie będące obiektem kontekstu.
Przy tworzeniu zdarzenia wartością domyślną dla właściwości buttons
musi być wartość 0
.
W czasie wysyłania zaufanych zdarzeń domyślna wartość przechowywana we właściwości buttons
może ulec zmianie we wszystkich typach zdarzeń myszy (w zależności od wciśniętego przycisku/przycisków).
W przypadku syntetycznych zdarzeń możemy samodzielnie ustawić wartość maski bitowej dla zdarzenia, np. w czasie tworzenia lub inicjowania zdarzenia.
Maska bitowa będzie miała postać liczby dziesiętnej typu unsigned short
. Może zatem przyjąć wartość od 0 do 65535, aczkolwiek właściwość buttons
zazwyczaj operuje jedynie na zakresie od 0 do 7 (3 bitów). Dla osób nieobytych z zapisem dwójkowym może być problem z rozpoznaniem poszczególnych bitów. W poniższej tabeli zamieszczam relację między wartością w zapisie binarnym i dziesiętnym oraz odpowiadające im stany przycisków.
Zapis binarny | Zapis dziesiętny | Znaczenie |
---|---|---|
000 | 0 | Żaden przycisk nie jest aktywny (wartość domyślna). |
001 | 1 | Wskazuje główny przycisk urządzenia (zazwyczaj lewy przycisk lub pojedynczy przycisk w urządzeniu jednoprzyciskowym, używany do aktywacji kontrolki interfejsu użytkownika lub zaznaczenia tekstu) lub wartość domyślną. |
010 | 2 | Wskazuje przycisk drugorzędny (zazwyczaj prawy przycisk, często używany do wyświetlania menu kontekstowego). |
100 | 4 | Wskazuje przycisk pomocniczy (zazwyczaj środkowy przycisk, często w połączeniu z kółkiem myszy). |
011 101 110 111 | 3 5 6 7 | Różne kombinacje powyższych. |
Niektóre urządzenia wskazujące wprowadzają lub symulują więcej przycisków, i wartości wyższe od 7
(w binarnych seriach 8
, 16
, 32
,...) mogą reprezentować tego typu przyciski.
Niektóre domyślne akcje skojarzone ze zdarzeniami takimi jak mousedown
i mouseup
zależą od tego, który przycisk został użyty.
Ponieważ suma każdego zbioru wartości dla przycisków tworzy unikatowy numer, to autory zawartości mogą używać operacji bitowych, aby określić ile przycisków jest obecnie wciśniętych i które są to przyciski, dla dowolnej liczby przycisków w urządzeniu. W ramach uzupełnienia warto przeanalizować operacje na maskach bitowych przy opisie metody Node.compareDocumentPosition()
oraz interfejsu NodeFilter.
Właściwości buttons
nie należy mylić z mniej uniwersalną właściwością MouseEvent.button
.
Prosty przykład:
<!DOCTYPE html>
<html>
<head>
<script>
// Uruchom po całkowitym załadowaniu dokumentu
window.onload = function(){
var button = document.getElementById("press");
var info = document.getElementById("info");
function readInfo(e){
var data = "Interfejs: " + e
+ "<br>" + "e.type: " + e.type
+ "<br>" + "e.buttons: " + e.buttons + "<br><br>";
info.innerHTML = data + info.innerHTML;
}
button.addEventListener("click", readInfo, false);
button.addEventListener("dblclick", readInfo, false);
button.addEventListener("mousedown", readInfo, false);
button.addEventListener("mouseup", readInfo, false);
}
</script>
</head>
<body>
<p>Kliknij w przycisk przy użyciu dowolnego przycisku myszy (nawet kilku jednocześnie) by uzyskać szczegółowe informacje dla zdarzenia.</p>
<input id="press" type="button" value="Kliknij mnie!">
<p style="color: blue;">Szczegółowe informacje dla przechwyconego zdarzenia:</p>
<p id="info"></p>
</body>
</html>
Na chwilę obecną jedynie przeglądarki Firefox i IE11 obsługują właściwość buttons
.
Interfejs Web IDL#
readonly attribute unsigned short buttons;