[Edge]。→
ユーザーが現在開いているダイアログを閉じたいと操作したときに <dialog> に発生します。例えば、ユーザーがブラウザーのユーザー インターフェイスの中で Esc キーを押したり、「ダイアログを閉じる」ボタンをクリックしたりしたときにブラウザーがこのイベントを発生させることがあります。
| バブリング | なし |
|---|---|
| キャンセル | 可 |
| インターフェイス | Event |
| イベント ハンドラー プロパティ | oncancel |
mdn より
HTML:
<dialog class="example-dialog">
<button class="close" type="reset">Close</button>
</dialog>
<button class="open-dialog">Open dialog</button>
<div class="result"></div>
JavaScript:
const result = document.querySelector('.result');
const dialog = document.querySelector('.example-dialog');
dialog.addEventListener('cancel', (event) => {
result.textContent = 'dialog was canceled';
});
const openDialog = document.querySelector('.open-dialog');
openDialog.addEventListener('click', () => {
if (typeof dialog.showModal === 'function') {
dialog.showModal();
result.textContent = '';
} else {
result.textContent = 'The dialog API is not supported by this browser';
}
});
const closeButton = document.querySelector('.close');
closeButton.addEventListener('click', () => {
dialog.close();
});
HTML:
<DIALOG id=IdTest> <BUTTON id=IdTojiru>閉じる</BUTTON> </DIALOG> <BUTTON id=IdHiraku>ダイアログを開く</BUTTON> <DIV id=IdLog></DIV>
JavaScript:
function JobHiraku(eve){ //「開く」ボタンを押した時のイベント処理:
IdTest.showModal(); //モーダル ダイアログとして表示。
// IdTest.show(); //(モードレス ダイアログとして表示。)
// IdTest.open=true; //(ダイアログを開く。[Esc] では閉じられなかった。)
}
function JobTojiru(eve){ //「閉じる」ボタンを押した時のイベント処理:
IdTest.open=false; //ダイアログを閉じる。
}
function Job(eve){ //キャンセルされた時のイベント処理:
IdLog.innerHTML="ダイアログは閉じられました。"
}
IdTest.oncancel=Job; //イベント割り当て
IdHiraku.onclick=JobHiraku; //イベント割り当て
IdTojiru.onclick=JobTojiru; //イベント割り当て
showModal()だと [Esc]キーが利いてキャンセルになるようです。