1- /**
2- * @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
3- */
4- ; ( function ( window , document ) {
5- /*jshint evil:true */
6- /** version */
7- var version = '3.7.3' ;
8-
9- /** Preset options */
10- var options = window . html5 || { } ;
11-
12- /** Used to skip problem elements */
13- var reSkip = / ^ < | ^ (?: b u t t o n | m a p | s e l e c t | t e x t a r e a | o b j e c t | i f r a m e | o p t i o n | o p t g r o u p ) $ / i;
14-
15- /** Not all elements can be cloned in IE **/
16- var saveClones = / ^ (?: a | b | c o d e | d i v | f i e l d s e t | h 1 | h 2 | h 3 | h 4 | h 5 | h 6 | i | l a b e l | l i | o l | p | q | s p a n | s t r o n g | s t y l e | t a b l e | t b o d y | t d | t h | t r | u l ) $ / i;
17-
18- /** Detect whether the browser supports default html5 styles */
19- var supportsHtml5Styles ;
20-
21- /** Name of the expando, to work with multiple documents or to re-shiv one document */
22- var expando = '_html5shiv' ;
23-
24- /** The id for the the documents expando */
25- var expanID = 0 ;
26-
27- /** Cached data for each document */
28- var expandoData = { } ;
29-
30- /** Detect whether the browser supports unknown elements */
31- var supportsUnknownElements ;
32-
33- ( function ( ) {
34- try {
35- var a = document . createElement ( 'a' ) ;
36- a . innerHTML = '<xyz></xyz>' ;
37- //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
38- supportsHtml5Styles = ( 'hidden' in a ) ;
39-
40- supportsUnknownElements = a . childNodes . length == 1 || ( function ( ) {
41- // assign a false positive if unable to shiv
42- ( document . createElement ) ( 'a' ) ;
43- var frag = document . createDocumentFragment ( ) ;
44- return (
45- typeof frag . cloneNode == 'undefined' ||
46- typeof frag . createDocumentFragment == 'undefined' ||
47- typeof frag . createElement == 'undefined'
48- ) ;
49- } ( ) ) ;
50- } catch ( e ) {
51- // assign a false positive if detection fails => unable to shiv
52- supportsHtml5Styles = true ;
53- supportsUnknownElements = true ;
54- }
55-
56- } ( ) ) ;
57-
58- /*--------------------------------------------------------------------------*/
59-
60- /**
61- * Creates a style sheet with the given CSS text and adds it to the document.
62- * @private
63- * @param {Document } ownerDocument The document.
64- * @param {String } cssText The CSS text.
65- * @returns {StyleSheet } The style element.
66- */
67- function addStyleSheet ( ownerDocument , cssText ) {
68- var p = ownerDocument . createElement ( 'p' ) ,
69- parent = ownerDocument . getElementsByTagName ( 'head' ) [ 0 ] || ownerDocument . documentElement ;
70-
71- p . innerHTML = 'x<style>' + cssText + '</style>' ;
72- return parent . insertBefore ( p . lastChild , parent . firstChild ) ;
73- }
74-
75- /**
76- * Returns the value of `html5.elements` as an array.
77- * @private
78- * @returns {Array } An array of shived element node names.
79- */
80- function getElements ( ) {
81- var elements = html5 . elements ;
82- return typeof elements == 'string' ? elements . split ( ' ' ) : elements ;
83- }
84-
85- /**
86- * Extends the built-in list of html5 elements
87- * @memberOf html5
88- * @param {String|Array } newElements whitespace separated list or array of new element names to shiv
89- * @param {Document } ownerDocument The context document.
90- */
91- function addElements ( newElements , ownerDocument ) {
92- var elements = html5 . elements ;
93- if ( typeof elements != 'string' ) {
94- elements = elements . join ( ' ' ) ;
95- }
96- if ( typeof newElements != 'string' ) {
97- newElements = newElements . join ( ' ' ) ;
98- }
99- html5 . elements = elements + ' ' + newElements ;
100- shivDocument ( ownerDocument ) ;
101- }
102-
103- /**
104- * Returns the data associated to the given document
105- * @private
106- * @param {Document } ownerDocument The document.
107- * @returns {Object } An object of data.
108- */
109- function getExpandoData ( ownerDocument ) {
110- var data = expandoData [ ownerDocument [ expando ] ] ;
111- if ( ! data ) {
112- data = { } ;
113- expanID ++ ;
114- ownerDocument [ expando ] = expanID ;
115- expandoData [ expanID ] = data ;
116- }
117- return data ;
118- }
119-
120- /**
121- * returns a shived element for the given nodeName and document
122- * @memberOf html5
123- * @param {String } nodeName name of the element
124- * @param {Document|DocumentFragment } ownerDocument The context document.
125- * @returns {Object } The shived element.
126- */
127- function createElement ( nodeName , ownerDocument , data ) {
128- if ( ! ownerDocument ) {
129- ownerDocument = document ;
130- }
131- if ( supportsUnknownElements ) {
132- return ownerDocument . createElement ( nodeName ) ;
133- }
134- if ( ! data ) {
135- data = getExpandoData ( ownerDocument ) ;
136- }
137- var node ;
138-
139- if ( data . cache [ nodeName ] ) {
140- node = data . cache [ nodeName ] . cloneNode ( ) ;
141- } else if ( saveClones . test ( nodeName ) ) {
142- node = ( data . cache [ nodeName ] = data . createElem ( nodeName ) ) . cloneNode ( ) ;
143- } else {
144- node = data . createElem ( nodeName ) ;
145- }
146-
147- // Avoid adding some elements to fragments in IE < 9 because
148- // * Attributes like `name` or `type` cannot be set/changed once an element
149- // is inserted into a document/fragment
150- // * Link elements with `src` attributes that are inaccessible, as with
151- // a 403 response, will cause the tab/window to crash
152- // * Script elements appended to fragments will execute when their `src`
153- // or `text` property is set
154- return node . canHaveChildren && ! reSkip . test ( nodeName ) && ! node . tagUrn ? data . frag . appendChild ( node ) : node ;
155- }
156-
157- /**
158- * returns a shived DocumentFragment for the given document
159- * @memberOf html5
160- * @param {Document } ownerDocument The context document.
161- * @returns {Object } The shived DocumentFragment.
162- */
163- function createDocumentFragment ( ownerDocument , data ) {
164- if ( ! ownerDocument ) {
165- ownerDocument = document ;
166- }
167- if ( supportsUnknownElements ) {
168- return ownerDocument . createDocumentFragment ( ) ;
169- }
170- data = data || getExpandoData ( ownerDocument ) ;
171- var clone = data . frag . cloneNode ( ) ,
172- i = 0 ,
173- elems = getElements ( ) ,
174- l = elems . length ;
175- for ( ; i < l ; i ++ ) {
176- clone . createElement ( elems [ i ] ) ;
177- }
178- return clone ;
179- }
180-
181- /**
182- * Shivs the `createElement` and `createDocumentFragment` methods of the document.
183- * @private
184- * @param {Document|DocumentFragment } ownerDocument The document.
185- * @param {Object } data of the document.
186- */
187- function shivMethods ( ownerDocument , data ) {
188- if ( ! data . cache ) {
189- data . cache = { } ;
190- data . createElem = ownerDocument . createElement ;
191- data . createFrag = ownerDocument . createDocumentFragment ;
192- data . frag = data . createFrag ( ) ;
193- }
194-
195-
196- ownerDocument . createElement = function ( nodeName ) {
197- //abort shiv
198- if ( ! html5 . shivMethods ) {
199- return data . createElem ( nodeName ) ;
200- }
201- return createElement ( nodeName , ownerDocument , data ) ;
202- } ;
203-
204- ownerDocument . createDocumentFragment = Function ( 'h,f' , 'return function(){' +
205- 'var n=f.cloneNode(),c=n.createElement;' +
206- 'h.shivMethods&&(' +
207- // unroll the `createElement` calls
208- getElements ( ) . join ( ) . replace ( / [ \w \- : ] + / g, function ( nodeName ) {
209- data . createElem ( nodeName ) ;
210- data . frag . createElement ( nodeName ) ;
211- return 'c("' + nodeName + '")' ;
212- } ) +
213- ');return n}'
214- ) ( html5 , data . frag ) ;
215- }
216-
217- /*--------------------------------------------------------------------------*/
218-
219- /**
220- * Shivs the given document.
221- * @memberOf html5
222- * @param {Document } ownerDocument The document to shiv.
223- * @returns {Document } The shived document.
224- */
225- function shivDocument ( ownerDocument ) {
226- if ( ! ownerDocument ) {
227- ownerDocument = document ;
228- }
229- var data = getExpandoData ( ownerDocument ) ;
230-
231- if ( html5 . shivCSS && ! supportsHtml5Styles && ! data . hasCSS ) {
232- data . hasCSS = ! ! addStyleSheet ( ownerDocument ,
233- // corrects block display not defined in IE6/7/8/9
234- 'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
235- // adds styling not present in IE6/7/8/9
236- 'mark{background:#FF0;color:#000}' +
237- // hides non-rendered elements
238- 'template{display:none}'
239- ) ;
240- }
241- if ( ! supportsUnknownElements ) {
242- shivMethods ( ownerDocument , data ) ;
243- }
244- return ownerDocument ;
245- }
246-
247- /*--------------------------------------------------------------------------*/
248-
249- /**
250- * The `html5` object is exposed so that more elements can be shived and
251- * existing shiving can be detected on iframes.
252- * @type Object
253- * @example
254- *
255- * // options can be changed before the script is included
256- * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
257- */
258- var html5 = {
259-
260- /**
261- * An array or space separated string of node names of the elements to shiv.
262- * @memberOf html5
263- * @type Array|String
264- */
265- 'elements' : options . elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video' ,
266-
267- /**
268- * current version of html5shiv
269- */
270- 'version' : version ,
271-
272- /**
273- * A flag to indicate that the HTML5 style sheet should be inserted.
274- * @memberOf html5
275- * @type Boolean
276- */
277- 'shivCSS' : ( options . shivCSS !== false ) ,
278-
279- /**
280- * Is equal to true if a browser supports creating unknown/HTML5 elements
281- * @memberOf html5
282- * @type boolean
283- */
284- 'supportsUnknownElements' : supportsUnknownElements ,
285-
286- /**
287- * A flag to indicate that the document's `createElement` and `createDocumentFragment`
288- * methods should be overwritten.
289- * @memberOf html5
290- * @type Boolean
291- */
292- 'shivMethods' : ( options . shivMethods !== false ) ,
293-
294- /**
295- * A string to describe the type of `html5` object ("default" or "default print").
296- * @memberOf html5
297- * @type String
298- */
299- 'type' : 'default' ,
300-
301- // shivs the document according to the specified `html5` object options
302- 'shivDocument' : shivDocument ,
303-
304- //creates a shived element
305- createElement : createElement ,
306-
307- //creates a shived documentFragment
308- createDocumentFragment : createDocumentFragment ,
309-
310- //extends list of elements
311- addElements : addElements
312- } ;
313-
314- /*--------------------------------------------------------------------------*/
315-
316- // expose html5
317- window . html5 = html5 ;
318-
319- // shiv the document
320- shivDocument ( document ) ;
321-
322- if ( typeof module == 'object' && module . exports ) {
323- module . exports = html5 ;
324- }
325-
326- } ( typeof window !== "undefined" ? window : this , document ) ) ;
1+ // This theme does not support Internet Explorer since version 3.7.
0 commit comments