123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- /**
- * 基于jQuery FullScreen修改
- * 新增支持IE全屏显示
- * Copyright (c) 2019 ruoyi
- */
- (function(jQuery) {
-
- /**
- * Sets or gets the fullscreen state.
- *
- * @param {boolean=} state
- * True to enable fullscreen mode, false to disable it. If not
- * specified then the current fullscreen state is returned.
- * @return {boolean|Element|jQuery|null}
- * When querying the fullscreen state then the current fullscreen
- * element (or true if browser doesn't support it) is returned
- * when browser is currently in full screen mode. False is returned
- * if browser is not in full screen mode. Null is returned if
- * browser doesn't support fullscreen mode at all. When setting
- * the fullscreen state then the current jQuery selection is
- * returned for chaining.
- * @this {jQuery}
- */
- function fullScreen(state)
- {
- var e, func, doc;
-
- // Do nothing when nothing was selected
- if (!this.length) return this;
-
- // We only use the first selected element because it doesn't make sense
- // to fullscreen multiple elements.
- e = (/** @type {Element} */ this[0]);
-
- // Find the real element and the document (Depends on whether the
- // document itself or a HTML element was selected)
- if (e.ownerDocument)
- {
- doc = e.ownerDocument;
- }
- else
- {
- doc = e;
- e = doc.documentElement;
- }
-
- // When no state was specified then return the current state.
- if (state == null)
- {
- // When fullscreen mode is not supported then return null
- if (!((/** @type {?Function} */ doc["exitFullscreen"])
- || (/** @type {?Function} */ doc["webkitExitFullscreen"])
- || (/** @type {?Function} */ doc["webkitCancelFullScreen"])
- || (/** @type {?Function} */ doc["msExitFullscreen"])
- || (/** @type {?Function} */ doc["mozCancelFullScreen"])))
- {
- return null;
- }
-
- // Check fullscreen state
- state = !!doc["fullscreenElement"]
- || !!doc["msFullscreenElement"]
- || !!doc["webkitIsFullScreen"]
- || !!doc["mozFullScreen"];
- if (!state) return state;
-
- // Return current fullscreen element or "true" if browser doesn't
- // support this
- return (/** @type {?Element} */ doc["fullscreenElement"])
- || (/** @type {?Element} */ doc["webkitFullscreenElement"])
- || (/** @type {?Element} */ doc["webkitCurrentFullScreenElement"])
- || (/** @type {?Element} */ doc["msFullscreenElement"])
- || (/** @type {?Element} */ doc["mozFullScreenElement"])
- || state;
- }
-
- // When state was specified then enter or exit fullscreen mode.
- if (state)
- {
- // Enter fullscreen
- func = (/** @type {?Function} */ e["requestFullscreen"])
- || (/** @type {?Function} */ e["webkitRequestFullscreen"])
- || (/** @type {?Function} */ e["webkitRequestFullScreen"])
- || (/** @type {?Function} */ e["msRequestFullscreen"])
- || (/** @type {?Function} */ e["mozRequestFullScreen"]);
- if (func)
- {
- func.call(e);
- }
- return this;
- }
- else
- {
- // Exit fullscreen
- func = (/** @type {?Function} */ doc["exitFullscreen"])
- || (/** @type {?Function} */ doc["webkitExitFullscreen"])
- || (/** @type {?Function} */ doc["webkitCancelFullScreen"])
- || (/** @type {?Function} */ doc["msExitFullscreen"])
- || (/** @type {?Function} */ doc["mozCancelFullScreen"]);
- if (func) func.call(doc);
- return this;
- }
- }
-
- /**
- * Toggles the fullscreen mode.
- *
- * @return {!jQuery}
- * The jQuery selection for chaining.
- * @this {jQuery}
- */
- function toggleFullScreen()
- {
- return (/** @type {!jQuery} */ fullScreen.call(this,
- !fullScreen.call(this)));
- }
-
- /**
- * Handles the browser-specific fullscreenchange event and triggers
- * a jquery event for it.
- *
- * @param {?Event} event
- * The fullscreenchange event.
- */
- function fullScreenChangeHandler(event)
- {
- jQuery(document).trigger(new jQuery.Event("fullscreenchange"));
- }
-
- /**
- * Handles the browser-specific fullscreenerror event and triggers
- * a jquery event for it.
- *
- * @param {?Event} event
- * The fullscreenerror event.
- */
- function fullScreenErrorHandler(event)
- {
- jQuery(document).trigger(new jQuery.Event("fullscreenerror"));
- }
-
- /**
- * Installs the fullscreenchange event handler.
- */
- function installFullScreenHandlers()
- {
- var e, change, error;
-
- // Determine event name
- e = document;
- if (e["webkitCancelFullScreen"])
- {
- change = "webkitfullscreenchange";
- error = "webkitfullscreenerror";
- }
- else if (e["msExitFullscreen"])
- {
- change = "MSFullscreenChange";
- error = "MSFullscreenError";
- }
- else if (e["mozCancelFullScreen"])
- {
- change = "mozfullscreenchange";
- error = "mozfullscreenerror";
- }
- else
- {
- change = "fullscreenchange";
- error = "fullscreenerror";
- }
-
- // Install the event handlers
- jQuery(document).bind(change, fullScreenChangeHandler);
- jQuery(document).bind(error, fullScreenErrorHandler);
- }
-
- jQuery.fn["fullScreen"] = fullScreen;
- jQuery.fn["toggleFullScreen"] = toggleFullScreen;
- installFullScreenHandlers();
-
- })(jQuery);
-
|