diff --git a/src/ol/control/fullscreencontrol.js b/src/ol/control/fullscreencontrol.js index c86584b4f2..976de1bf64 100644 --- a/src/ol/control/fullscreencontrol.js +++ b/src/ol/control/fullscreencontrol.js @@ -162,9 +162,9 @@ ol.control.FullScreen.prototype.handleFullScreenChange_ = function() { ol.control.FullScreen.prototype.setMap = function(map) { ol.control.Control.prototype.setMap.call(this, map); if (map) { - this.listenerKeys.push( - ol.events.listen(ol.global.document, ol.control.FullScreen.CHANGETYPE, - this.handleFullScreenChange_, this) + this.listenerKeys.push(ol.events.listen(ol.global.document, + ol.control.FullScreen.getChangeType_(), + this.handleFullScreenChange_, this) ); } }; @@ -238,18 +238,24 @@ ol.control.FullScreen.exitFullScreen = function() { }; /** - * @type {string} + * @return {string} Change type. + * @private */ -ol.control.FullScreen.CHANGETYPE = (function() { - var body = document.body; - if (body.webkitRequestFullscreen) { - return 'webkitfullscreenchange'; - } else if (body.mozRequestFullScreen) { - return 'mozfullscreenchange'; - } else if (body.msRequestFullscreen) { - return 'MSFullscreenChange'; - } else if (body.requestFullscreen) { - return 'fullscreenchange'; - } - return undefined; +ol.control.FullScreen.getChangeType_ = (function() { + var changeType; + return function() { + if (!changeType) { + var body = document.body; + if (body.webkitRequestFullscreen) { + changeType = 'webkitfullscreenchange'; + } else if (body.mozRequestFullScreen) { + changeType = 'mozfullscreenchange'; + } else if (body.msRequestFullscreen) { + changeType = 'MSFullscreenChange'; + } else if (body.requestFullscreen) { + changeType = 'fullscreenchange'; + } + } + return changeType; + }; })();