phaser/src/device/Fullscreen.js

104 lines
2.8 KiB
JavaScript
Raw Normal View History

2018-02-12 16:01:20 +00:00
/**
* @author Richard Davey <rich@photonstorm.com>
2023-01-02 17:36:27 +00:00
* @copyright 2013-2023 Photon Storm Ltd.
2019-05-10 15:15:04 +00:00
* @license {@link https://opensource.org/licenses/MIT|MIT License}
2018-02-12 16:01:20 +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
* @since 3.0.0
*
* @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: '',
keyboard: false,
request: ''
2016-11-25 04:33:48 +00:00
};
/**
* Checks for support of the Full Screen API.
*
2019-02-12 12:04:35 +00:00
* @ignore
2016-11-25 04:33:48 +00:00
*/
function init ()
{
if (typeof importScripts === 'function')
{
return Fullscreen;
}
var i;
var suffix1 = 'Fullscreen';
var suffix2 = 'FullScreen';
2016-11-25 04:33:48 +00:00
var fs = [
'request' + suffix1,
'request' + suffix2,
'webkitRequest' + suffix1,
'webkitRequest' + suffix2,
'msRequest' + suffix1,
'msRequest' + suffix2,
'mozRequest' + suffix2,
'mozRequest' + suffix1
2016-11-25 04:33:48 +00:00
];
for (i = 0; i < fs.length; i++)
2016-11-25 04:33:48 +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 = [
'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)
{
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?
// 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;
}
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;
}
module.exports = init();