Skip to content

Commit

Permalink
Merge branch 'focus-body-on-visibility-change' of https://github.com/…
Browse files Browse the repository at this point in the history
  • Loading branch information
hakimel committed Oct 10, 2013
2 parents ac1dbd9 + 6043756 commit a143861
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 3 deletions.
36 changes: 35 additions & 1 deletion js/reveal.js
Expand Up @@ -80,6 +80,9 @@ var Reveal = (function(){
// Opens links in an iframe preview overlay
previewLinks: false,

// Focuses body when page changes visiblity to ensure keyboard shortcuts work
focusBodyOnPageVisiblityChange: true,

// Theme (see /css/theme)
theme: null,

Expand Down Expand Up @@ -606,10 +609,23 @@ var Reveal = (function(){
document.addEventListener( 'keydown', onDocumentKeyDown, false );
}

if ( config.progress && dom.progress ) {
if( config.progress && dom.progress ) {
dom.progress.addEventListener( 'click', onProgressClicked, false );
}

if( config.focusBodyOnPageVisiblityChange ) {
var visibilityChange;
if ('hidden' in document) {
visibilityChange = 'visibilitychange';
} else if ('msHidden' in document) {
visibilityChange = 'msvisibilitychange';
} else if ('webkitHidden' in document) {
visibilityChange = 'webkitvisibilitychange';
}

document.addEventListener(visibilityChange, onPageVisibilityChange, false);
}

[ 'touchstart', 'click' ].forEach( function( eventName ) {
dom.controlsLeft.forEach( function( el ) { el.addEventListener( eventName, onNavigateLeftClicked, false ); } );
dom.controlsRight.forEach( function( el ) { el.addEventListener( eventName, onNavigateRightClicked, false ); } );
Expand Down Expand Up @@ -2655,6 +2671,24 @@ var Reveal = (function(){

}

/**
* Handle for the window level 'visibilitychange' event.
*/
function onPageVisibilityChange( event ) {

var isHidden = document.webkitHidden ||
document.msHidden ||
document.hidden;

// If, after clicking a link or similar and we're coming back,
// focus the document.body to ensure we can use keyboard shortcuts
if( isHidden === false && document.activeElement !== document.body ) {
document.activeElement.blur();
document.body.focus();
}

}

/**
* Invoked when a slide is and we're in the overview.
*/
Expand Down

0 comments on commit a143861

Please sign in to comment.