84 lines
2.0 KiB
HTML
84 lines
2.0 KiB
HTML
<html>
|
|
<head>
|
|
<style>
|
|
.box-hidden {
|
|
display: none;
|
|
position: absolute;
|
|
top: 19em; left:15em; width:20em; height:5em;
|
|
border: 2px solid black;
|
|
padding:0 1em 1em 1em;
|
|
background-color: #eee;
|
|
z-index:1002;
|
|
overflow: auto;
|
|
}
|
|
</style>
|
|
|
|
<script>
|
|
var dialogOpen = false, lastFocus, dialog, okbutton, pagebackground;
|
|
|
|
function showDialog(el) {
|
|
lastFocus = el || document.activeElement;
|
|
toggleDialog('show');
|
|
}
|
|
function hideDialog(el) {
|
|
toggleDialog('hide');
|
|
}
|
|
|
|
function toggleDialog(sh) {
|
|
dialog = document.getElementById("box");
|
|
okbutton = document.getElementById("ok");
|
|
pagebackground = document.getElementById("bg");
|
|
|
|
if (sh == "show") {
|
|
dialogOpen = true;
|
|
|
|
// show the dialog
|
|
dialog.style.display = 'block';
|
|
|
|
// after displaying the dialog, focus an element inside it
|
|
okbutton.focus();
|
|
|
|
// only hide the background *after* you've moved focus out of the content that will be "hidden"
|
|
pagebackground.setAttribute("aria-hidden","true");
|
|
|
|
} else {
|
|
dialogOpen = false;
|
|
dialog.style.display = 'none';
|
|
pagebackground.setAttribute("aria-hidden","false");
|
|
lastFocus.focus();
|
|
}
|
|
}
|
|
|
|
|
|
document.addEventListener("focus", function(event) {
|
|
|
|
var d = document.getElementById("box");
|
|
|
|
if (dialogOpen && !d.contains(event.target)) {
|
|
event.stopPropagation();
|
|
d.focus();
|
|
}
|
|
|
|
}, true);
|
|
|
|
|
|
document.addEventListener("keydown", function(event) {
|
|
if (dialogOpen && event.keyCode == 27) {
|
|
toggleDialog('hide');
|
|
}
|
|
}, true);
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<p>This was taken from <a href="http://www.w3.org/WAI/GL/wiki/Using_ARIA_role%3Ddialog_to_implement_a_modal_dialog_box">The WCAG Wiki</a>.</p>
|
|
<p><a onclick="toggleDialog('show');" href="#">Display a dialog</a></p>
|
|
|
|
<div tabindex="-1" style="display: none;" role="dialog" aria-labelledby="myDialog" id="box" class="box-hidden">
|
|
<h3 id="myDialog">Just an example.</h3>
|
|
<button onclick="toggleDialog('hide');" class="close-button">OK</button>
|
|
<button onclick="toggleDialog('hide');" class="close-button">Cancel</button>
|
|
</div>
|
|
<p>Another <a href="foo">link</a></p>
|
|
</body>
|
|
</html>
|