source: extensions/Full_Background/js/jquery.fullscreen.js @ 19415

Last change on this file since 19415 was 19033, checked in by Miklfe, 12 years ago
File size: 4.8 KB
Line 
1/**
2 * @preserve jquery.fullscreen 1.1.0
3 * https://github.com/kayahr/jquery-fullscreen-plugin
4 * Copyright (C) 2012 Klaus Reimer <k@ailis.de>
5 * Licensed under the MIT license
6 * (See http://www.opensource.org/licenses/mit-license)
7 */
8 
9(function() {
10
11/**
12 * Sets or gets the fullscreen state.
13 *
14 * @param {boolean=} state
15 *            True to enable fullscreen mode, false to disable it. If not
16 *            specified then the current fullscreen state is returned.
17 * @return {boolean|Element|jQuery|null}
18 *            When querying the fullscreen state then the current fullscreen
19 *            element (or true if browser doesn't support it) is returned
20 *            when browser is currently in full screen mode. False is returned
21 *            if browser is not in full screen mode. Null is returned if
22 *            browser doesn't support fullscreen mode at all. When setting
23 *            the fullscreen state then the current jQuery selection is
24 *            returned for chaining.
25 * @this {jQuery}
26 */
27function fullScreen(state)
28{
29    var e, func, doc;
30   
31    // Do nothing when nothing was selected
32    if (!this.length) return this;
33   
34    // We only use the first selected element because it doesn't make sense
35    // to fullscreen multiple elements.
36    e = (/** @type {Element} */ this[0]);
37   
38    // Find the real element and the document (Depends on wether the
39    // document itself or a HTML element was selected)
40    if (e instanceof Document)
41    {
42        doc = e;
43        e = doc.documentElement;
44    }
45    else
46    {
47        doc = e.ownerDocument;
48    }
49   
50    // When no state was specified then return the current state.
51    if (state == null)
52    {
53        // When fullscreen mode is not supported then return null
54        if (!((/** @type {?Function} */ doc["cancelFullScreen"])
55            || (/** @type {?Function} */ doc["webkitCancelFullScreen"])
56            || (/** @type {?Function} */ doc["mozCancelFullScreen"])))
57        {
58            return null;
59        }
60       
61        // Check fullscreen state
62        state = !!doc["fullScreen"]
63            || !!doc["webkitIsFullScreen"]
64            || !!doc["mozFullScreen"];
65        if (!state) return state;
66       
67        // Return current fullscreen element or "true" if browser doesn't
68        // support this
69        return (/** @type {?Element} */ doc["fullScreenElement"])
70            || (/** @type {?Element} */ doc["webkitCurrentFullScreenElement"])
71            || (/** @type {?Element} */ doc["mozFullScreenElement"])
72            || state;
73    }
74   
75    // When state was specified then enter or exit fullscreen mode.
76    if (state)
77    {
78        // Enter fullscreen
79        func = (/** @type {?Function} */ e["requestFullScreen"])
80            || (/** @type {?Function} */ e["webkitRequestFullScreen"])
81            || (/** @type {?Function} */ e["mozRequestFullScreen"]);
82        if (func) func.call(e);
83        return this;
84    }
85    else
86    {
87        // Exit fullscreen
88        func = (/** @type {?Function} */ doc["cancelFullScreen"])
89            || (/** @type {?Function} */ doc["webkitCancelFullScreen"])
90            || (/** @type {?Function} */ doc["mozCancelFullScreen"]);
91        if (func) func.call(doc);
92        return this;
93    }
94}
95
96/**
97 * Toggles the fullscreen mode.
98 *
99 * @return {!jQuery}
100 *            The jQuery selection for chaining.
101 * @this {jQuery}
102 */
103function toggleFullScreen()
104{
105    return (/** @type {!jQuery} */ fullScreen.call(this, 
106        !fullScreen.call(this)));
107}
108
109/**
110 * Handles the browser-specific fullscreenchange event and triggers
111 * a jquery event for it.
112 *
113 * @param {?Event} event
114 *            The fullscreenchange event.
115 */
116function fullScreenChangeHandler(event)
117{
118    jQuery(document).trigger(new jQuery.Event("fullscreenchange"));
119}
120
121/**
122 * Handles the browser-specific fullscreenerror event and triggers
123 * a jquery event for it.
124 *
125 * @param {?Event} event
126 *            The fullscreenerror event.
127 */
128function fullScreenErrorHandler(event)
129{
130    jQuery(document).trigger(new jQuery.Event("fullscreenerror"));
131}
132
133/**
134 * Installs the fullscreenchange event handler.
135 */
136function installFullScreenHandlers()
137{
138    var e, change, error;
139   
140    // Determine event name
141    e = document;
142    if (e["webkitCancelFullScreen"])
143    {
144        change = "webkitfullscreenchange";
145        error = "webkitfullscreenerror";
146    }
147    else if (e["mozCancelFullScreen"])
148    {
149        change = "mozfullscreenchange";
150        error = "mozfullscreenerror";
151    }
152    else 
153    {
154        change = "fullscreenchange";
155        error = "fullscreenerror";
156    }
157
158    // Install the event handlers
159    document.addEventListener(change, fullScreenChangeHandler, true);
160    document.addEventListener(error, fullScreenErrorHandler, true);
161}
162
163jQuery.fn["fullScreen"] = fullScreen;
164jQuery.fn["toggleFullScreen"] = toggleFullScreen;
165installFullScreenHandlers();
166
167})();
Note: See TracBrowser for help on using the repository browser.