Skip to content

Instantly share code, notes, and snippets.

@miketaylr
Created June 29, 2015 23:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save miketaylr/d8f83fa81170cf0d61dd to your computer and use it in GitHub Desktop.
Save miketaylr/d8f83fa81170cf0d61dd to your computer and use it in GitHub Desktop.
this.getNativeFullscreenSupport = function() {
var t = this,
e = {
supportsFullScreen: 'viewport',
isFullScreen: function() {
try {
return t.getDC().hasClass('fullscreen')
} catch (e) {
return !1
}
},
requestFullScreen: function() {
t.playerModel.applyCommand('fullscreen', !0)
},
cancelFullScreen: function() {
t.playerModel.applyCommand('fullscreen', !1)
},
prefix: '',
ref: this
},
i = 'webkit moz o ms khtml'.split(' ');
if (document.cancelFullScreen !== void 0) e.supportsFullScreen = !0;
else
for (var s = 0, n = i.length; n > s; s++)
if (e.prefix = i[s], document.createElement('video')[e.prefix + 'EnterFullscreen'] !== void 0 && (e.supportsFullScreen = 'mediaonly'), (document[e.prefix + 'CancelFullScreen'] !== void 0 || document[e.prefix + 'ExitFullscreen'] !== void 0) && (e.supportsFullScreen = 'dom', 'moz' == e.prefix && document[e.prefix + 'FullScreenEnabled'] === void 0 && (e.supportsFullScreen = 'viewport')), e.supportsFullScreen !== !1 && 'viewport' !== e.supportsFullScreen) break;
return 'viewport' == e.supportsFullScreen || 'dom' == e.supportsFullScreen && this.getConfig('forceFullViewport') ? e : 'mediaonly' == e.supportsFullScreen ? (e.requestFullScreen = function(e) {
t.playerModel.getMediaElement().get(0)[this.prefix + 'EnterFullscreen']()
}, e.dest = {}, e.cancelFullScreen = function() {}, e) : (e.isFullScreen = function(e) {
var i = t.getIframe() ? parent.window.document : document;
switch (this.prefix) {
case '':
return i.fullScreen;
case 'webkit':
return i.webkitIsFullScreen;
case 'ms':
return null != i.msFullscreenElement;
default:
return i[this.prefix + 'FullScreen']
}
},
e.requestFullScreen = function() {
var e = t.getIframeParent() || $(window),
i = t.getIframe() ? t.getIframe().get(0) : null || t.getDC().get(0),
s = this,
n = t.getIframe() ? parent.window.document : document,
e = t.getIframeParent() || $(window),
a = function(t) {
if (s.isFullScreen()) s.ref.playerModel.applyCommand('fullscreen', !0);
else {
var e = s.ref.getIframeParent() || $(window),
i = e.data('fsdata');
null != i && (e.scrollTop(i.scrollTop), e.scrollLeft(i.scrollLeft), s.ref.playerModel.applyCommand('fullscreen', !1))
}
};
if (e.data('fsdata', {
scrollTop: e.scrollTop(),
scrollLeft: e.scrollLeft()
}), $(n).unbind(this.prefix + 'fullscreenchange.projekktor').bind(this.prefix + 'fullscreenchange.projekktor', a), $(n).unbind('MSFullscreenChange.projekktor').bind('MSFullscreenChange.projekktor', a), '' === this.prefix) i.requestFullScreen();
else try {
i[this.prefix + 'RequestFullScreen']()
} catch (r) {
i[this.prefix + 'RequestFullscreen']()
}
},
e.cancelFullScreen = function() {
var e = t.getIframe() ? parent.window.document : document,
i = t.getIframeParent() || $(window),
s = i.data('fsdata');
if (e.exitFullScreen) e.exitFullScreen();
else if ('' == this.prefix) e.cancelFullScreen();
else try {
e[this.prefix + 'CancelFullScreen']()
} catch (n) {
e[this.prefix + 'ExitFullscreen']()
}
null != s && (i.scrollTop(s.scrollTop), i.scrollLeft(s.scrollLeft))
},
e)
},
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment