diff --git a/src/jqLite.js b/src/jqLite.js index 9670341bcba0..586d316af140 100644 --- a/src/jqLite.js +++ b/src/jqLite.js @@ -784,6 +784,11 @@ forEach({ handle = expandoStore.handle = createEventHandler(element, events); } + // IE9-11 has no method "contains" in SVG element and in Node.prototype. Bug #10259. + var contains = Node.prototype.contains || function (arg) { + return !!(this.compareDocumentPosition(arg) & 16); + }; + // http://jsperf.com/string-indexof-vs-split var types = type.indexOf(' ') >= 0 ? type.split(' ') : [type]; var i = types.length; @@ -804,7 +809,7 @@ forEach({ var target = this, related = event.relatedTarget; // For mousenter/leave call the handler if related is outside the target. // NB: No relatedTarget if the mouse left/entered the browser window - if (!related || (related !== target && !target.contains(related))) { + if (!related || (related !== target && !contains.call(target, related))) { handle(event, type); } });