You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
2.2 KiB
JavaScript
103 lines
2.2 KiB
JavaScript
/*global Element */
|
|
(function( window, document ) {
|
|
'use strict';
|
|
|
|
var keyboardAllowed = typeof Element !== 'undefined' && 'ALLOW_KEYBOARD_INPUT' in Element, // IE6 throws without typeof check
|
|
|
|
fn = (function() {
|
|
var fnMap = [
|
|
[
|
|
'requestFullscreen',
|
|
'exitFullscreen',
|
|
'fullscreenchange',
|
|
'fullscreen',
|
|
'fullscreenElement',
|
|
'fullscreenerror'
|
|
],
|
|
[
|
|
'webkitRequestFullScreen',
|
|
'webkitCancelFullScreen',
|
|
'webkitfullscreenchange',
|
|
'webkitIsFullScreen',
|
|
'webkitCurrentFullScreenElement',
|
|
'webkitfullscreenerror'
|
|
|
|
],
|
|
[
|
|
'mozRequestFullScreen',
|
|
'mozCancelFullScreen',
|
|
'mozfullscreenchange',
|
|
'mozFullScreen',
|
|
'mozFullScreenElement',
|
|
'mozfullscreenerror'
|
|
]
|
|
],
|
|
i = 0,
|
|
l = fnMap.length,
|
|
ret = {},
|
|
val,
|
|
valLength;
|
|
|
|
for ( ; i < l; i++ ) {
|
|
val = fnMap[ i ];
|
|
if ( val && val[1] in document ) {
|
|
for ( i = 0, valLength = val.length; i < valLength; i++ ) {
|
|
ret[ fnMap[0][ i ] ] = val[ i ];
|
|
}
|
|
return ret;
|
|
}
|
|
}
|
|
return false;
|
|
})(),
|
|
|
|
screenfull = {
|
|
isFullscreen: document[ fn.fullscreen ],
|
|
element: document[ fn.fullscreenElement ],
|
|
|
|
request: function( elem ) {
|
|
var request = fn.requestFullscreen;
|
|
|
|
elem = elem || document.documentElement;
|
|
elem[ request ]( keyboardAllowed && Element.ALLOW_KEYBOARD_INPUT );
|
|
|
|
// Work around Safari 5.1 bug: reports support for
|
|
// keyboard in fullscreen even though it doesn't.
|
|
if ( !document.isFullscreen ) {
|
|
elem[ request ]();
|
|
}
|
|
},
|
|
|
|
exit: function() {
|
|
document[ fn.exitFullscreen ]();
|
|
},
|
|
|
|
toggle: function( elem ) {
|
|
if ( this.isFullscreen ) {
|
|
this.exit();
|
|
} else {
|
|
this.request( elem );
|
|
}
|
|
},
|
|
|
|
onchange: function() {},
|
|
onerror: function() {}
|
|
};
|
|
|
|
if ( !fn ) {
|
|
window.screenfull = null;
|
|
return;
|
|
}
|
|
|
|
document.addEventListener( fn.fullscreenchange, function( e ) {
|
|
screenfull.isFullscreen = document[ fn.fullscreen ];
|
|
screenfull.element = document[ fn.fullscreenElement ];
|
|
screenfull.onchange.call( screenfull, e );
|
|
});
|
|
|
|
document.addEventListener( fn.fullscreenerror, function( e ) {
|
|
screenfull.onerror.call( screenfull, e );
|
|
});
|
|
|
|
window.screenfull = screenfull;
|
|
|
|
})( window, document ); |