diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..451151a Binary files /dev/null and b/.DS_Store differ diff --git a/fullscreen/index.html b/fullscreen/index.html new file mode 100644 index 0000000..ee168ac --- /dev/null +++ b/fullscreen/index.html @@ -0,0 +1,26 @@ + + + FS Demo + + + + + + + +
+ +
+ + + + \ No newline at end of file diff --git a/fullscreen/screenfull.js b/fullscreen/screenfull.js new file mode 100644 index 0000000..1557548 --- /dev/null +++ b/fullscreen/screenfull.js @@ -0,0 +1,137 @@ +/*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 val, valLength; + var fnMap = [ + [ + 'requestFullscreen', + 'exitFullscreen', + 'fullscreenElement', + 'fullscreenEnabled', + 'fullscreenchange', + 'fullscreenerror' + ], + // new WebKit + [ + 'webkitRequestFullscreen', + 'webkitExitFullscreen', + 'webkitFullscreenElement', + 'webkitFullscreenEnabled', + 'webkitfullscreenchange', + 'webkitfullscreenerror' + + ], + // old WebKit (Safari 5.1) + [ + 'webkitRequestFullScreen', + 'webkitCancelFullScreen', + 'webkitCurrentFullScreenElement', + 'webkitCancelFullScreen', + 'webkitfullscreenchange', + 'webkitfullscreenerror' + + ], + [ + 'mozRequestFullScreen', + 'mozCancelFullScreen', + 'mozFullScreenElement', + 'mozFullScreenEnabled', + 'mozfullscreenchange', + 'mozfullscreenerror' + ], + [ + 'msRequestFullscreen', + 'msExitFullscreen', + 'msFullscreenElement', + 'msFullscreenEnabled', + 'MSFullscreenChange', + 'MSFullscreenError' + ] + ]; + var i = 0; + var l = fnMap.length; + var ret = {}; + + 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 = { + request: function (elem) { + var request = fn.requestFullscreen; + + elem = elem || document.documentElement; + + // Work around Safari 5.1 bug: reports support for + // keyboard in fullscreen even though it doesn't. + // Browser sniffing, since the alternative with + // setTimeout is even worse. + if (/5\.1[\.\d]* Safari/.test(navigator.userAgent)) { + elem[request](); + } else { + elem[request](keyboardAllowed && Element.ALLOW_KEYBOARD_INPUT); + } + }, + exit: function () { + document[fn.exitFullscreen](); + }, + toggle: function (elem) { + if (this.isFullscreen) { + this.exit(); + } else { + this.request(elem); + } + }, + onchange: function () {}, + onerror: function () {}, + raw: fn + }; + + if (!fn) { + window.screenfull = false; + return; + } + + Object.defineProperties(screenfull, { + isFullscreen: { + get: function () { + return !!document[fn.fullscreenElement]; + } + }, + element: { + enumerable: true, + get: function () { + return document[fn.fullscreenElement]; + } + }, + enabled: { + enumerable: true, + get: function () { + // Coerce to boolean in case of old WebKit + return !!document[fn.fullscreenEnabled]; + } + } + }); + + document.addEventListener(fn.fullscreenchange, function (e) { + screenfull.onchange.call(screenfull, e); + }); + + document.addEventListener(fn.fullscreenerror, function (e) { + screenfull.onerror.call(screenfull, e); + }); + + window.screenfull = screenfull; +})(window, document); \ No newline at end of file diff --git a/fullscreen/style.css b/fullscreen/style.css new file mode 100644 index 0000000..89db14a --- /dev/null +++ b/fullscreen/style.css @@ -0,0 +1,20 @@ +html, body { + margin: 0; + padding: 0; + display: table; + width: 100%; + height: 100%; + background: #000; +} +#container { + text-align: center; + display: table-cell; + vertical-align: middle; + height: 100%; + width: 100%; +} +canvas { + background: #333; + width: 100%; + height: 100%; +} \ No newline at end of file