mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-03 14:37:02 +03:00
Drop support for old browsers and some jQuery
This commit is contained in:
parent
091c4ec811
commit
d06fed09d6
38 changed files with 6137 additions and 872 deletions
56
vendors/knockout/src/utils.domManipulation.js
vendored
56
vendors/knockout/src/utils.domManipulation.js
vendored
|
|
@ -13,10 +13,7 @@
|
|||
'th': tr,
|
||||
'option': select,
|
||||
'optgroup': select
|
||||
},
|
||||
|
||||
// This is needed for old IE if you're *not* using either jQuery or innerShiv. Doesn't affect other cases.
|
||||
mayRequireCreateElementHack = ko.utils.ieVersion <= 8;
|
||||
};
|
||||
|
||||
function getWrap(tags) {
|
||||
var m = tags.match(/^(?:<!--.*?-->\s*?)*?<([a-z]+)[\s>]/);
|
||||
|
|
@ -49,17 +46,7 @@
|
|||
// somehow shims the native APIs so it just works anyway)
|
||||
div.appendChild(windowContext['innerShiv'](markup));
|
||||
} else {
|
||||
if (mayRequireCreateElementHack) {
|
||||
// The document.createElement('my-element') trick to enable custom elements in IE6-8
|
||||
// only works if we assign innerHTML on an element associated with that document.
|
||||
documentContext.body.appendChild(div);
|
||||
}
|
||||
|
||||
div.innerHTML = markup;
|
||||
|
||||
if (mayRequireCreateElementHack) {
|
||||
div.parentNode.removeChild(div);
|
||||
}
|
||||
}
|
||||
|
||||
// Move to the right depth
|
||||
|
|
@ -69,35 +56,8 @@
|
|||
return ko.utils.makeArray(div.lastChild.childNodes);
|
||||
}
|
||||
|
||||
function jQueryHtmlParse(html, documentContext) {
|
||||
// jQuery's "parseHTML" function was introduced in jQuery 1.8.0 and is a documented public API.
|
||||
if (jQueryInstance['parseHTML']) {
|
||||
return jQueryInstance['parseHTML'](html, documentContext) || []; // Ensure we always return an array and never null
|
||||
} else {
|
||||
// For jQuery < 1.8.0, we fall back on the undocumented internal "clean" function.
|
||||
var elems = jQueryInstance['clean']([html], documentContext);
|
||||
|
||||
// As of jQuery 1.7.1, jQuery parses the HTML by appending it to some dummy parent nodes held in an in-memory document fragment.
|
||||
// Unfortunately, it never clears the dummy parent nodes from the document fragment, so it leaks memory over time.
|
||||
// Fix this by finding the top-most dummy parent element, and detaching it from its owner fragment.
|
||||
if (elems && elems[0]) {
|
||||
// Find the top-most parent element that's a direct child of a document fragment
|
||||
var elem = elems[0];
|
||||
while (elem.parentNode && elem.parentNode.nodeType !== 11 /* i.e., DocumentFragment */)
|
||||
elem = elem.parentNode;
|
||||
// ... then detach it
|
||||
if (elem.parentNode)
|
||||
elem.parentNode.removeChild(elem);
|
||||
}
|
||||
|
||||
return elems;
|
||||
}
|
||||
}
|
||||
|
||||
ko.utils.parseHtmlFragment = function(html, documentContext) {
|
||||
return jQueryInstance ?
|
||||
jQueryHtmlParse(html, documentContext) : // As below, benefit from jQuery's optimisations where possible
|
||||
simpleHtmlParse(html, documentContext); // ... otherwise, this simple logic will do in most common cases.
|
||||
return simpleHtmlParse(html, documentContext); // ... otherwise, this simple logic will do in most common cases.
|
||||
};
|
||||
|
||||
ko.utils.parseHtmlForTemplateNodes = function(html, documentContext) {
|
||||
|
|
@ -118,14 +78,10 @@
|
|||
// jQuery contains a lot of sophisticated code to parse arbitrary HTML fragments,
|
||||
// for example <tr> elements which are not normally allowed to exist on their own.
|
||||
// If you've referenced jQuery we'll use that rather than duplicating its code.
|
||||
if (jQueryInstance) {
|
||||
jQueryInstance(node)['html'](html);
|
||||
} else {
|
||||
// ... otherwise, use KO's own parsing logic.
|
||||
var parsedNodes = ko.utils.parseHtmlFragment(html, node.ownerDocument);
|
||||
for (var i = 0; i < parsedNodes.length; i++)
|
||||
node.appendChild(parsedNodes[i]);
|
||||
}
|
||||
// ... otherwise, use KO's own parsing logic.
|
||||
var parsedNodes = ko.utils.parseHtmlFragment(html, node.ownerDocument);
|
||||
for (var i = 0; i < parsedNodes.length; i++)
|
||||
node.appendChild(parsedNodes[i]);
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue