Skip to content

Commit

Permalink
Drop Safari 5.1 workaround
Browse files Browse the repository at this point in the history
Fixes #151
  • Loading branch information
sindresorhus committed Sep 4, 2019
1 parent 69c911e commit 927e361
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 53 deletions.
8 changes: 4 additions & 4 deletions dist/screenfull.d.ts
Expand Up @@ -62,20 +62,20 @@ declare namespace screenfull {
});
// Fullscreen an element
const el = document.getElementById('target');
const element = document.getElementById('target');
document.getElementById('button').addEventListener('click', () => {
if (screenfull.enabled) {
screenfull.request(el);
screenfull.request(element);
}
});
// Fullscreen an element with jQuery
const target = $('#target')[0]; // Get DOM element from jQuery collection
const element = $('#target')[0]; // Get DOM element from jQuery collection
$('#button').on('click', () => {
if (screenfull.enabled) {
screenfull.request(target);
screenfull.request(element);
}
});
```
Expand Down
33 changes: 9 additions & 24 deletions dist/screenfull.js
@@ -1,14 +1,13 @@
/*!
* screenfull
* v4.2.1 - 2019-07-27
* v4.2.1 - 2019-09-04
* (c) Sindre Sorhus; MIT License
*/
(function () {
'use strict';

var document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};
var isCommonjs = typeof module !== 'undefined' && module.exports;
var keyboardAllowed = typeof Element !== 'undefined' && 'ALLOW_KEYBOARD_INPUT' in Element;

var fn = (function () {
var val;
Expand All @@ -32,7 +31,7 @@
'webkitfullscreenerror'

],
// Old WebKit (Safari 5.1)
// Old WebKit
[
'webkitRequestFullScreen',
'webkitCancelFullScreen',
Expand Down Expand Up @@ -83,32 +82,18 @@
};

var screenfull = {
request: function (elem) {
request: function (element) {
return new Promise(function (resolve, reject) {
var request = fn.requestFullscreen;

var onFullScreenEntered = function () {
this.off('change', onFullScreenEntered);
resolve();
}.bind(this);

this.on('change', onFullScreenEntered);

elem = elem || document.documentElement;

var promise;

// 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 (/ Version\/5\.1(?:\.\d+)? Safari\//.test(navigator.userAgent)) {
promise = elem[request]();
} else {
promise = elem[request](keyboardAllowed ? Element.ALLOW_KEYBOARD_INPUT : {});
}
element = element || document.documentElement;

Promise.resolve(promise).catch(reject);
Promise.resolve(element[fn.requestFullscreen]()).catch(reject);
}.bind(this));
},
exit: function () {
Expand All @@ -123,13 +108,13 @@
resolve();
}.bind(this);

document[fn.exitFullscreen]();

this.on('change', onFullScreenExit);

Promise.resolve(document[fn.exitFullscreen]()).catch(reject);
}.bind(this));
},
toggle: function (elem) {
return this.isFullscreen ? this.exit() : this.request(elem);
toggle: function (element) {
return this.isFullscreen ? this.exit() : this.request(element);
},
onchange: function (callback) {
this.on('change', callback);
Expand Down
4 changes: 2 additions & 2 deletions dist/screenfull.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

31 changes: 8 additions & 23 deletions src/screenfull.js
Expand Up @@ -3,7 +3,6 @@

var document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};
var isCommonjs = typeof module !== 'undefined' && module.exports;
var keyboardAllowed = typeof Element !== 'undefined' && 'ALLOW_KEYBOARD_INPUT' in Element;

var fn = (function () {
var val;
Expand All @@ -27,7 +26,7 @@
'webkitfullscreenerror'

],
// Old WebKit (Safari 5.1)
// Old WebKit
[
'webkitRequestFullScreen',
'webkitCancelFullScreen',
Expand Down Expand Up @@ -78,32 +77,18 @@
};

var screenfull = {
request: function (elem) {
request: function (element) {
return new Promise(function (resolve, reject) {
var request = fn.requestFullscreen;

var onFullScreenEntered = function () {
this.off('change', onFullScreenEntered);
resolve();
}.bind(this);

this.on('change', onFullScreenEntered);

elem = elem || document.documentElement;

var promise;

// 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 (/ Version\/5\.1(?:\.\d+)? Safari\//.test(navigator.userAgent)) {
promise = elem[request]();
} else {
promise = elem[request](keyboardAllowed ? Element.ALLOW_KEYBOARD_INPUT : {});
}
element = element || document.documentElement;

Promise.resolve(promise).catch(reject);
Promise.resolve(element[fn.requestFullscreen]()).catch(reject);
}.bind(this));
},
exit: function () {
Expand All @@ -118,13 +103,13 @@
resolve();
}.bind(this);

document[fn.exitFullscreen]();

this.on('change', onFullScreenExit);

Promise.resolve(document[fn.exitFullscreen]()).catch(reject);
}.bind(this));
},
toggle: function (elem) {
return this.isFullscreen ? this.exit() : this.request(elem);
toggle: function (element) {
return this.isFullscreen ? this.exit() : this.request(element);
},
onchange: function (callback) {
this.on('change', callback);
Expand Down

0 comments on commit 927e361

Please sign in to comment.