CommandEvent
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
The CommandEvent
interface represents an event notifying the user when a button
element with valid commandForElement
and command
attributes is about to invoke an interactive element.
This is the event object for the HTMLElement
command
event, which represents an action from an Invoker Control when it is invoked (for example when it is clicked or pressed).
Constructor
CommandEvent()
-
Creates an
CommandEvent
object.
Instance properties
This interface inherits properties from its parent, Event
.
CommandEvent.source
Read only-
An
HTMLButtonElement
representing the button that caused this invocation. CommandEvent.command
Read only-
A string representing the
command
value of the source button.
Examples
>Basic example
<button commandfor="mypopover" command="show-popover">Show popover</button>
<div popover id="mypopover" role="[declare appropriate ARIA role]">
<!-- popover content here -->
<button commandfor="mypopover" command="hide-popover">Hide popover</button>
</div>
const popover = document.getElementById("mypopover");
// …
popover.addEventListener("command", (event) => {
if (event.command === "show-popover") {
console.log("Popover is about to be shown");
}
});
Using custom values for commands
In this example three buttons have been created with commands
with custom values.
<div class="controls">
<button commandfor="the-image" command="--rotate-left">Rotate Left</button>
<button commandfor="the-image" command="--reset">Reset</button>
<button commandfor="the-image" command="--rotate-right">Rotate Right</button>
</div>
<img
id="the-image"
src="/shared-assets/images/examples/dino.svg"
alt="dinosaur head rotated 0 degrees" />
An event listener is attached to the image using the command
event.
When one of the buttons is clicked, the listener runs code based on the custom command
value assigned to the button, rotating the image and also updating it's alt
text to indicate the new angle of the image.
const image = document.getElementById("the-image");
image.addEventListener("command", (event) => {
let rotate = parseInt(event.target.style.rotate || "0");
if (event.command == "--reset") {
rotate = 0;
event.target.style.rotate = `${rotate}deg`;
} else if (event.command === "--rotate-left") {
rotate === -270 ? (rotate = 0) : (rotate = rotate - 90);
event.target.style.rotate = `${rotate}deg`;
} else if (event.command === "--rotate-right") {
rotate === 270 ? (rotate = 0) : (rotate = rotate + 90);
event.target.style.rotate = `${rotate}deg`;
}
event.target.alt = `dinosaur head rotated ${rotate} degrees`;
});
Specifications
Specification |
---|
HTML> # commandevent> |
Browser compatibility
Loading…