Redefine Element#down in IE 6-7 to avoid extending all descendants when no selector is given. [#452 state:resolved] (eno, Andrew Dupont)
This commit is contained in:
parent
4a0b9b7c1d
commit
e88f22e0c3
|
@ -1,4 +1,6 @@
|
|||
* Reverse the definitions of Event#pointer(X|Y) and Event#pointer to prevent unnecessary computation. [#403 state:resolved] (Nick Stakenburg, Andrew Dupont).
|
||||
* Redefine Element#down in IE 6-7 to avoid extending all descendants when no selector is given. [#452 state:resolved] (eno, Andrew Dupont)
|
||||
|
||||
* Reverse the definitions of Event#pointer(X|Y) and Event#pointer to prevent unnecessary computation. [#403 state:resolved] (Nick Stakenburg, Andrew Dupont)
|
||||
|
||||
* Add first-class support for `mouseenter` and `mouseleave` events in non-IE browsers (IE supports them natively). [#350 state:resolved] (Nick Stakenburg, Andrew Dupont)
|
||||
|
||||
|
|
|
@ -1323,6 +1323,28 @@ else if (Prototype.Browser.IE) {
|
|||
onchange: v._getEv
|
||||
});
|
||||
})(Element._attributeTranslations.read.values);
|
||||
|
||||
// We optimize Element#down for IE so that it does not call
|
||||
// Element#descendants (and therefore extend all nodes).
|
||||
if (Prototype.BrowserFeatures.ElementExtensions) {
|
||||
(function() {
|
||||
function _descendants(element) {
|
||||
var nodes = element.getElementsByTagName('*'), results = [];
|
||||
for (var i = 0, node; node = nodes[i]; i++)
|
||||
if (node.tagName !== "!") // Filter out comment nodes.
|
||||
results.push(node);
|
||||
return results;
|
||||
}
|
||||
|
||||
Element.Methods.down = function(element, expression, index) {
|
||||
element = $(element);
|
||||
if (arguments.length == 1) return element.firstDescendant();
|
||||
return Object.isNumber(expression) ? _descendants(element)[expression] :
|
||||
Element.select(element, expression)[index || 0];
|
||||
}
|
||||
})();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) {
|
||||
|
|
Loading…
Reference in New Issue