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>
 |