files/en-us/web/api/closewatcher/cancel_event/index.md
{{APIRef("HTML DOM")}}
A cancel event is fired at a {{domxref("CloseWatcher")}} object before the close event, so that close can be prevented from firing, if necessary. It is triggered by all close signals (e.g., the <kbd>Esc</kbd> key) as well as {{domxref("CloseWatcher.requestClose()")}}.
Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}, or set an event handler property.
addEventListener("cancel", (event) => { })
oncancel = (event) => { }
An {{domxref("Event")}}.
cancel eventIn this example, we ask the user to confirm that they really want to close the component, and if they don't, we cancel the event using {{domxref("Event.preventDefault()")}}, which prevents the close event from being fired.
watcher.addEventListener("cancel", (e) => {
if (e.cancelable && hasUnsavedData) {
const userReallyWantsToClose = confirm("Are you sure you want to close?");
if (!userReallyWantsToClose) {
e.preventDefault();
}
}
});
// Trigger a close request manually
watcher.requestClose();
{{Specifications}}
{{Compat}}