Файл: library/wysihtml5/src/dom/get_as_dom.js
Строк: 108
<?php
/**
* Returns the given html wrapped in a div element
*
* Fixing IE's inability to treat unknown elements (HTML5 section, article, ...) correctly
* when inserted via innerHTML
*
* @param {String} html The html which should be wrapped in a dom element
* @param {Obejct} [context] Document object of the context the html belongs to
*
* @example
* wysihtml5.dom.getAsDom("<article>foo</article>");
*/
wysihtml5.dom.getAsDom = (function() {
var _innerHTMLShiv = function(html, context) {
var tempElement = context.createElement("div");
tempElement.style.display = "none";
context.body.appendChild(tempElement);
// IE throws an exception when trying to insert <frameset></frameset> via innerHTML
try { tempElement.innerHTML = html; } catch(e) {}
context.body.removeChild(tempElement);
return tempElement;
};
/**
* Make sure IE supports HTML5 tags, which is accomplished by simply creating one instance of each element
*/
var _ensureHTML5Compatibility = function(context) {
if (context._wysihtml5_supportsHTML5Tags) {
return;
}
for (var i=0, length=HTML5_ELEMENTS.length; i<length; i++) {
context.createElement(HTML5_ELEMENTS[i]);
}
context._wysihtml5_supportsHTML5Tags = true;
};
/**
* List of html5 tags
* taken from http://simon.html5.org/html5-elements
*/
var HTML5_ELEMENTS = [
"abbr", "article", "aside", "audio", "bdi", "canvas", "command", "datalist", "details", "figcaption",
"figure", "footer", "header", "hgroup", "keygen", "mark", "meter", "nav", "output", "progress",
"rp", "rt", "ruby", "svg", "section", "source", "summary", "time", "track", "video", "wbr"
];
return function(html, context) {
context = context || document;
var tempElement;
if (typeof(html) === "object" && html.nodeType) {
tempElement = context.createElement("div");
tempElement.appendChild(html);
} else if (wysihtml5.browser.supportsHTML5Tags(context)) {
tempElement = context.createElement("div");
tempElement.innerHTML = html;
} else {
_ensureHTML5Compatibility(context);
tempElement = _innerHTMLShiv(html, context);
}
return tempElement;
};
})();
?>