Created
November 10, 2011 09:02
-
-
Save sofish/1354468 to your computer and use it in GitHub Desktop.
Native FullScreen JavaScript API
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Native FullScreen JavaScript API | |
CopyRight: Johndyer, http://johndyer.name/native-fullscreen-javascript-api-plus-jquery-plugin/ | |
------------- | |
Assumes Mozilla naming conventions instead of W3C for now | |
*/ | |
(function() { | |
var | |
fullScreenApi = { | |
supportsFullScreen: false, | |
isFullScreen: function() { return false; }, | |
requestFullScreen: function() {}, | |
cancelFullScreen: function() {}, | |
fullScreenEventName: '', | |
prefix: '' | |
}, | |
browserPrefixes = 'webkit moz o ms khtml'.split(' '); | |
// check for native support | |
if (typeof document.cancelFullScreen != 'undefined') { | |
fullScreenApi.supportsFullScreen = true; | |
} else { | |
// check for fullscreen support by vendor prefix | |
for (var i = 0, il = browserPrefixes.length; i < il; i++ ) { | |
fullScreenApi.prefix = browserPrefixes[i]; | |
if (typeof document[fullScreenApi.prefix + 'CancelFullScreen' ] != 'undefined' ) { | |
fullScreenApi.supportsFullScreen = true; | |
break; | |
} | |
} | |
} | |
// update methods to do something useful | |
if (fullScreenApi.supportsFullScreen) { | |
fullScreenApi.fullScreenEventName = fullScreenApi.prefix + 'fullscreenchange'; | |
fullScreenApi.isFullScreen = function() { | |
switch (this.prefix) { | |
case '': | |
return document.fullScreen; | |
case 'webkit': | |
return document.webkitIsFullScreen; | |
default: | |
return document[this.prefix + 'FullScreen']; | |
} | |
} | |
fullScreenApi.requestFullScreen = function(el) { | |
return (this.prefix === '') ? el.requestFullScreen() : el[this.prefix + 'RequestFullScreen'](); | |
} | |
fullScreenApi.cancelFullScreen = function(el) { | |
return (this.prefix === '') ? document.cancelFullScreen() : document[this.prefix + 'CancelFullScreen'](); | |
} | |
} | |
// jQuery plugin | |
if (typeof jQuery != 'undefined') { | |
jQuery.fn.requestFullScreen = function() { | |
return this.each(function() { | |
if (fullScreenApi.supportsFullScreen) { | |
fullScreenApi.requestFullScreen(this); | |
} | |
}); | |
}; | |
} | |
// export api | |
window.fullScreenApi = fullScreenApi; | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment