| 1 {"version":3,"names":[],"mappings":"","sources":["html5shiv.js"],"sourcesContent
":["/*!\n* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/G
PL2 Licensed\n*/\n;(function(window, document) {\n /*jshint evil:true */\n /
** version */\n var version = '3.7.3';\n \n /** Preset options */\n va
r options = window.html5 || {};\n \n /** Used to skip problem elements */\n
var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup
)$/i;\n \n /** Not all elements can be cloned in IE **/\n var saveClones
= /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|sty
le|table|tbody|td|th|tr|ul)$/i;\n \n /** Detect whether the browser supports
default html5 styles */\n var supportsHtml5Styles;\n \n /** Name of the
expando, to work with multiple documents or to re-shiv one document */\n var
expando = '_html5shiv';\n \n /** The id for the the documents expando */\n
var expanID = 0;\n \n /** Cached data for each document */\n var expand
oData = {};\n \n /** Detect whether the browser supports unknown elements */
\n var supportsUnknownElements;\n \n (function() {\n try {\n
var a = document.createElement('a');\n a.innerHTML = '<xyz></xyz>';\n
//if the hidden property is implemented we can assume, that the browse
r supports basic HTML5 Styles\n supportsHtml5Styles = ('hidden' in a);\
n \n supportsUnknownElements = a.childNodes.length == 1 || (function()
{\n // assign a false positive if unable to shiv\n (docum
ent.createElement)('a');\n var frag = document.createDocumentFragment
();\n return (\n typeof frag.cloneNode == 'undefined' ||
\n typeof frag.createDocumentFragment == 'undefined' ||\n
typeof frag.createElement == 'undefined'\n );\n }());\n
} catch(e) {\n // assign a false positive if detection fails => unab
le to shiv\n supportsHtml5Styles = true;\n supportsUnknownElements
= true;\n }\n \n }());\n \n /*------------------------------------
--------------------------------------*/\n \n /**\n * Creates a style sh
eet with the given CSS text and adds it to the document.\n * @private\n
* @param {Document} ownerDocument The document.\n * @param {String} cssText
The CSS text.\n * @returns {StyleSheet} The style element.\n */\n fun
ction addStyleSheet(ownerDocument, cssText) {\n var p = ownerDocument.creat
eElement('p'),\n parent = ownerDocument.getElementsByTagName('head')[0]
|| ownerDocument.documentElement;\n \n p.innerHTML = 'x<style>' + cssText
+ '</style>';\n return parent.insertBefore(p.lastChild, parent.firstChild)
;\n }\n \n /**\n * Returns the value of `html5.elements` as an array.
\n * @private\n * @returns {Array} An array of shived element node names
.\n */\n function getElements() {\n var elements = html5.elements;\n
return typeof elements == 'string' ? elements.split(' ') : elements;\n
}\n \n /**\n * Extends the built-in list of html5 elements\n * @memb
erOf html5\n * @param {String|Array} newElements whitespace separated list o
r array of new element names to shiv\n * @param {Document} ownerDocument The
context document.\n */\n function addElements(newElements, ownerDocument
) {\n var elements = html5.elements;\n if(typeof elements != 'string')
{\n elements = elements.join(' ');\n }\n if(typeof newElements
!= 'string'){\n newElements = newElements.join(' ');\n }\n html
5.elements = elements +' '+ newElements;\n shivDocument(ownerDocument);\n
}\n \n /**\n * Returns the data associated to the given document\n
* @private\n * @param {Document} ownerDocument The document.\n * @retu
rns {Object} An object of data.\n */\n function getExpandoData(ownerDocum
ent) {\n var data = expandoData[ownerDocument[expando]];\n if (!data)
{\n data = {};\n expanID++;\n ownerDocument[expando]
= expanID;\n expandoData[expanID] = data;\n }\n return data;\
n }\n \n /**\n * returns a shived element for the given nodeName and
document\n * @memberOf html5\n * @param {String} nodeName name of the el
ement\n * @param {Document|DocumentFragment} ownerDocument The context docum
ent.\n * @returns {Object} The shived element.\n */\n function create
Element(nodeName, ownerDocument, data){\n if (!ownerDocument) {\n
ownerDocument = document;\n }\n if(supportsUnknownElements){\n
return ownerDocument.createElement(nodeName);\n }\n if (!data) {\n
data = getExpandoData(ownerDocument);\n }\n var node;\n \n
if (data.cache[nodeName]) {\n node = data.cache[nodeName].cloneNode(
);\n } else if (saveClones.test(nodeName)) {\n node = (data.cache[
nodeName] = data.createElem(nodeName)).cloneNode();\n } else {\n n
ode = data.createElem(nodeName);\n }\n \n // Avoid adding some elemen
ts to fragments in IE < 9 because\n // * Attributes like `name` or `type` c
annot be set/changed once an element\n // is inserted into a document/fra
gment\n // * Link elements with `src` attributes that are inaccessible, as
with\n // a 403 response, will cause the tab/window to crash\n // *
Script elements appended to fragments will execute when their `src`\n //
or `text` property is set\n return node.canHaveChildren && !reSkip.test(nod
eName) && !node.tagUrn ? data.frag.appendChild(node) : node;\n }\n \n /**
\n * returns a shived DocumentFragment for the given document\n * @membe
rOf html5\n * @param {Document} ownerDocument The context document.\n *
@returns {Object} The shived DocumentFragment.\n */\n function createDocu
mentFragment(ownerDocument, data){\n if (!ownerDocument) {\n owner
Document = document;\n }\n if(supportsUnknownElements){\n ret
urn ownerDocument.createDocumentFragment();\n }\n data = data || getEx
pandoData(ownerDocument);\n var clone = data.frag.cloneNode(),\n i
= 0,\n elems = getElements(),\n l = elems.length;\n for(
;i<l;i++){\n clone.createElement(elems[i]);\n }\n return clon
e;\n }\n \n /**\n * Shivs the `createElement` and `createDocumentFrag
ment` methods of the document.\n * @private\n * @param {Document|Documen
tFragment} ownerDocument The document.\n * @param {Object} data of the docum
ent.\n */\n function shivMethods(ownerDocument, data) {\n if (!data.
cache) {\n data.cache = {};\n data.createElem = ownerDocument.
createElement;\n data.createFrag = ownerDocument.createDocumentFragment
;\n data.frag = data.createFrag();\n }\n \n \n ownerDocumen
t.createElement = function(nodeName) {\n //abort shiv\n if (!html5
.shivMethods) {\n return data.createElem(nodeName);\n }\n
return createElement(nodeName, ownerDocument, data);\n };\n \n own
erDocument.createDocumentFragment = Function('h,f', 'return function(){' +\n
'var n=f.cloneNode(),c=n.createElement;' +\n 'h.shivMethods&&(' +\n
// unroll the `createElement` calls\n getElements().join().repl
ace(/[\\w\\-:]+/g, function(nodeName) {\n data.createElem(nodeName);\
n data.frag.createElement(nodeName);\n return 'c(\"' + nod
eName + '\")';\n }) +\n ');return n}'\n )(html5, data.frag)
;\n }\n \n /*------------------------------------------------------------
--------------*/\n \n /**\n * Shivs the given document.\n * @memberO
f html5\n * @param {Document} ownerDocument The document to shiv.\n * @r
eturns {Document} The shived document.\n */\n function shivDocument(owner
Document) {\n if (!ownerDocument) {\n ownerDocument = document;\n
}\n var data = getExpandoData(ownerDocument);\n \n if (html5.shi
vCSS && !supportsHtml5Styles && !data.hasCSS) {\n data.hasCSS = !!addStyl
eSheet(ownerDocument,\n // corrects block display not defined in IE6/7/
8/9\n 'article,aside,dialog,figcaption,figure,footer,header,hgroup,main
,nav,section{display:block}' +\n // adds styling not present in IE6/7/8
/9\n 'mark{background:#FF0;color:#000}' +\n // hides non-rende
red elements\n 'template{display:none}'\n );\n }\n if
(!supportsUnknownElements) {\n shivMethods(ownerDocument, data);\n }
\n return ownerDocument;\n }\n \n /*--------------------------------
------------------------------------------*/\n \n /**\n * The `html5` ob
ject is exposed so that more elements can be shived and\n * existing shiving
can be detected on iframes.\n * @type Object\n * @example\n *\n
* // options can be changed before the script is included\n * html5 = { 'el
ements': 'mark section', 'shivCSS': false, 'shivMethods': false };\n */\n
var html5 = {\n \n /**\n * An array or space separated string of no
de names of the elements to shiv.\n * @memberOf html5\n * @type Arra
y|String\n */\n 'elements': options.elements || 'abbr article aside a
udio bdi canvas data datalist details dialog figcaption figure footer header hgr
oup main mark meter nav output picture progress section summary template time vi
deo',\n \n /**\n * current version of html5shiv\n */\n 'v
ersion': version,\n \n /**\n * A flag to indicate that the HTML5 sty
le sheet should be inserted.\n * @memberOf html5\n * @type Boolean\n
*/\n 'shivCSS': (options.shivCSS !== false),\n \n /**\n
* Is equal to true if a browser supports creating unknown/HTML5 elements\n
* @memberOf html5\n * @type boolean\n */\n 'supportsUnknownEle
ments': supportsUnknownElements,\n \n /**\n * A flag to indicate tha
t the document's `createElement` and `createDocumentFragment`\n * methods
should be overwritten.\n * @memberOf html5\n * @type Boolean\n
*/\n 'shivMethods': (options.shivMethods !== false),\n \n /**\n
* A string to describe the type of `html5` object (\"default\" or \"default pr
int\").\n * @memberOf html5\n * @type String\n */\n 'type
': 'default',\n \n // shivs the document according to the specified `html5
` object options\n 'shivDocument': shivDocument,\n \n //creates a shi
ved element\n createElement: createElement,\n \n //creates a shived d
ocumentFragment\n createDocumentFragment: createDocumentFragment,\n \n
//extends list of elements\n addElements: addElements\n };\n \n /*
--------------------------------------------------------------------------*/\n
\n // expose html5\n window.html5 = html5;\n \n // shiv the document\n
shivDocument(document);\n \n if(typeof module == 'object' && module.expo
rts){\n module.exports = html5;\n }\n \n }(typeof window !== \"undefin
ed\" ? window : this, document));\n "],"file":"html5shiv.js"} |