11/**
2- * @preserve jquery.fullscreen 1.0 .0
2+ * @preserve jquery.fullscreen 1.1 .0
33 * https://github.com/kayahr/jquery-fullscreen-plugin
44 * Copyright (C) 2012 Klaus Reimer <k@ailis.de>
55 * Licensed under the MIT license
1414 * @param {boolean= } state
1515 * True to enable fullscreen mode, false to disable it. If not
1616 * specified then the current fullscreen state is returned.
17- * @return {boolean|jQuery|null }
18- * When querying the fullscreen state then true, false or null
19- * is returned. Null indicates a browser without fullscreen
20- * support. When setting the state then the current jQuery
21- * selection is returned for chaining.
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.
2225 * @this {jQuery}
2326 */
2427function fullScreen ( state )
@@ -55,10 +58,18 @@ function fullScreen(state)
5558 return null ;
5659 }
5760
58- // Return the current fullscreen state
59- return ! ! doc [ "fullScreen" ]
61+ // Check fullscreen state
62+ state = ! ! doc [ "fullScreen" ]
6063 || ! ! doc [ "webkitIsFullScreen" ]
6164 || ! ! 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 ;
6273 }
6374
6475 // When state was specified then enter or exit fullscreen mode.
@@ -80,7 +91,7 @@ function fullScreen(state)
8091 if ( func ) func . call ( doc ) ;
8192 return this ;
8293 }
83- } ;
94+ }
8495
8596/**
8697 * Toggles the fullscreen mode.
@@ -93,9 +104,64 @@ function toggleFullScreen()
93104{
94105 return ( /** @type {!jQuery } */ fullScreen . call ( this ,
95106 ! fullScreen . call ( this ) ) ) ;
96- } ;
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+ */
116+ function 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+ */
128+ function fullScreenErrorHandler ( event )
129+ {
130+ jQuery ( document ) . trigger ( new jQuery . Event ( "fullscreenerror" ) ) ;
131+ }
132+
133+ /**
134+ * Installs the fullscreenchange event handler.
135+ */
136+ function 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+ }
97162
98163jQuery . fn [ "fullScreen" ] = fullScreen ;
99164jQuery . fn [ "toggleFullScreen" ] = toggleFullScreen ;
165+ installFullScreenHandlers ( ) ;
100166
101167} ) ( ) ;
0 commit comments