MouseEvent#
MouseEvent.getModifierState()#
Metoda getModifierState()
zwraca boolowską wartość true
jeśli przekazany łańcuch znakowy odpowiada klawiszowi modyfikującemu i w chwili wysłania danego zdarzenia miał on aktywny stan, w przeciwnym razie zwrócona zostanie wartość false
.
Składnia#
Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:
var activeKey = mouseEvent.getModifierState(key);
activeKey
- boolowskietrue
lubfalse
.mouseEvent
- zdarzenie będący obiektem kontekstu.key
- łańcuch znakowy reprezentujący klawisz modyfikujący. Według specyfikacji wielkość znaków ma znaczenie (w praktyce wszystko zależy od danej implementacji).
Algorytm wywołania metody getModifierState(key)
nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:
- Zwróć boolowskie
true
jeślikey
jest klawiszem modyfikującym i w chwili wysłania do obiektu kontekstu miał on aktywny stan. W przeciwnym razie zwróć boolowskiefalse
.
Metoda getModifierState()
w przeciwieństwie do standardowych właściwości MouseEvent.altKey
, MouseEvent.ctrlKey
, MouseEvent.metaKey
czy MouseEvent.shiftKey
pozwala sprawdzić stan aktywności dowolnego klawisza modyfikującego.
Informację pozwalającą odróżnić od siebie lewy i prawy klawisz modyfikujący można odczytać ze zdarzenia klawiatury przy użyciu właściwości KeyboardEvent.location
.
Prosty przykład:
<!DOCTYPE html>
<html>
<head>
<script>
function readInfo(context, e){
var info = document.getElementById("info");
var modifier = "e.getModifierState('" + context.value + "') :";
var data = "Interfejs: " + e
+ "<br>" + "e.type: " + e.type
+ "<br>" + modifier + e.getModifierState(context.value) + "<br><br>";
info.innerHTML = data + info.innerHTML;
}
</script>
</head>
<body>
<p>Kliknij w przycisk (z opcjonalnym wciśnięciem dedykowanego klawisza modyfikującego) by uzyskać szczegółowe informacje dla zdarzenia.</p>
<input type="button" value="Alt" onclick="readInfo(this, event)">
<input type="button" value="AltGraph" onclick="readInfo(this, event)">
<input type="button" value="Control" onclick="readInfo(this, event)">
<input type="button" value="Shift" onclick="readInfo(this, event)">
<input type="button" value="CapsLock" onclick="readInfo(this, event)">
<input type="button" value="NumLock" onclick="readInfo(this, event)">
<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ą metodę getModifierState()
, a podstawowa różnica polega na tym, że dla IE11 wielkość znaków w argumencie przekazanym do metody nie ma znaczenia.
Interfejs Web IDL#
boolean getModifierState(DOMString key);