2018-02-12 16:01:20 +00:00
|
|
|
/**
|
|
|
|
* @author Richard Davey <rich@photonstorm.com>
|
2019-01-15 16:20:22 +00:00
|
|
|
* @copyright 2019 Photon Storm Ltd.
|
2018-02-12 16:01:20 +00:00
|
|
|
* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License}
|
|
|
|
*/
|
|
|
|
|
2018-01-25 17:03:35 +00:00
|
|
|
/**
|
|
|
|
* Determines the full screen support of the browser running this Phaser Game instance.
|
|
|
|
* These values are read-only and populated during the boot sequence of the game.
|
|
|
|
* They are then referenced by internal game systems and are available for you to access
|
|
|
|
* via `this.sys.game.device.fullscreen` from within any Scene.
|
|
|
|
*
|
2018-03-28 14:04:09 +00:00
|
|
|
* @typedef {object} Phaser.Device.Fullscreen
|
2018-01-25 17:03:35 +00:00
|
|
|
* @since 3.0.0
|
2018-03-28 14:04:09 +00:00
|
|
|
*
|
2018-01-25 17:03:35 +00:00
|
|
|
* @property {boolean} available - Does the browser support the Full Screen API?
|
|
|
|
* @property {boolean} keyboard - Does the browser support access to the Keyboard during Full Screen mode?
|
|
|
|
* @property {string} cancel - If the browser supports the Full Screen API this holds the call you need to use to cancel it.
|
|
|
|
* @property {string} request - If the browser supports the Full Screen API this holds the call you need to use to activate it.
|
|
|
|
*/
|
2016-11-25 04:33:48 +00:00
|
|
|
var Fullscreen = {
|
|
|
|
|
|
|
|
available: false,
|
|
|
|
cancel: '',
|
2018-01-25 17:03:35 +00:00
|
|
|
keyboard: false,
|
|
|
|
request: ''
|
2016-11-25 04:33:48 +00:00
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Checks for support of the Full Screen API.
|
|
|
|
*/
|
|
|
|
function init ()
|
|
|
|
{
|
2017-08-01 12:10:08 +00:00
|
|
|
var i;
|
|
|
|
|
2019-01-23 00:12:26 +00:00
|
|
|
var suffix1 = 'Fullscreen';
|
|
|
|
var suffix2 = 'FullScreen';
|
|
|
|
|
2016-11-25 04:33:48 +00:00
|
|
|
var fs = [
|
2019-01-23 00:12:26 +00:00
|
|
|
'request' + suffix1,
|
|
|
|
'request' + suffix2,
|
|
|
|
'webkitRequest' + suffix1,
|
|
|
|
'webkitRequest' + suffix2,
|
|
|
|
'msRequest' + suffix1,
|
|
|
|
'msRequest' + suffix2,
|
|
|
|
'mozRequest' + suffix2,
|
|
|
|
'mozRequest' + suffix1
|
2016-11-25 04:33:48 +00:00
|
|
|
];
|
|
|
|
|
2017-08-01 12:10:08 +00:00
|
|
|
for (i = 0; i < fs.length; i++)
|
2016-11-25 04:33:48 +00:00
|
|
|
{
|
2019-01-23 00:12:26 +00:00
|
|
|
if (document.documentElement[fs[i]])
|
2016-11-25 04:33:48 +00:00
|
|
|
{
|
|
|
|
Fullscreen.available = true;
|
|
|
|
Fullscreen.request = fs[i];
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
var cfs = [
|
2019-01-23 00:12:26 +00:00
|
|
|
'cancel' + suffix2,
|
|
|
|
'exit' + suffix1,
|
|
|
|
'webkitCancel' + suffix2,
|
|
|
|
'webkitExit' + suffix1,
|
|
|
|
'msCancel' + suffix2,
|
|
|
|
'msExit' + suffix1,
|
|
|
|
'mozCancel' + suffix2,
|
|
|
|
'mozExit' + suffix1
|
2016-11-25 04:33:48 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
if (Fullscreen.available)
|
|
|
|
{
|
2017-08-01 12:10:08 +00:00
|
|
|
for (i = 0; i < cfs.length; i++)
|
2016-11-25 04:33:48 +00:00
|
|
|
{
|
|
|
|
if (document[cfs[i]])
|
|
|
|
{
|
|
|
|
Fullscreen.cancel = cfs[i];
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Keyboard Input?
|
2019-01-23 00:12:26 +00:00
|
|
|
// Safari 5.1 says it supports fullscreen keyboard, but is lying.
|
|
|
|
if (window['Element'] && Element['ALLOW_KEYBOARD_INPUT'] && !(/ Version\/5\.1(?:\.\d+)? Safari\//).test(navigator.userAgent))
|
2016-11-25 04:33:48 +00:00
|
|
|
{
|
|
|
|
Fullscreen.keyboard = true;
|
|
|
|
}
|
|
|
|
|
2019-01-23 00:12:26 +00:00
|
|
|
Object.defineProperty(Fullscreen, 'active', { get: function () { return !!(document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement); } });
|
|
|
|
|
2016-11-25 04:33:48 +00:00
|
|
|
return Fullscreen;
|
|
|
|
}
|
|
|
|
|
2016-11-26 01:28:53 +00:00
|
|
|
module.exports = init();
|