Skip to content
Permalink
Browse files

Added an extra documentElement check to isXMLDoc for IE - and added a…

… number of unit tests for isXMLDoc. Fixes #4833.
  • Loading branch information
jeresig committed Jul 27, 2009
1 parent cae93c3 commit 2cd9ee3510a03091c929b849ea164c9f97e262e7
Showing with 38 additions and 2 deletions.
  1. +4 −1 src/core.js
  2. +34 −1 test/unit/core.js
@@ -313,7 +313,10 @@ jQuery.extend({

// check if an element is in a (or is an) XML document
isXMLDoc: function( elem ) {
return (elem.ownerDocument || elem).documentElement.nodeName !== "HTML";
// documentElement is verified for cases where it doesn't yet exist
// (such as loading iframes in IE - #4833)
var documentElement = (elem.ownerDocument || elem).documentElement;
return !!documentElement && documentElement.nodeName !== "HTML";
},

// Evalulates a script in a global context
@@ -269,6 +269,39 @@ test("isFunction", function() {
});
});

test("isXMLDoc - HTML", function() {
expect(4);

ok( !jQuery.isXMLDoc( document ), "HTML document" );
ok( !jQuery.isXMLDoc( document.documentElement ), "HTML documentElement" );
ok( !jQuery.isXMLDoc( document.body ), "HTML Body Element" );

var iframe = document.createElement("iframe");
document.body.appendChild( iframe );

try {
var body = jQuery(iframe).contents().find("body")[0];
ok( !jQuery.isXMLDoc( body ), "Iframe body element" );
} catch(e){
ok( false, "Iframe body element" );
}

document.body.removeChild( iframe );
});

if ( !isLocal ) {
test("isXMLDoc - XML", function() {
expect(3);
stop();
jQuery.get('data/dashboard.xml', function(xml) {
ok( jQuery.isXMLDoc( xml ), "XML document" );
ok( jQuery.isXMLDoc( xml.documentElement ), "XML documentElement" );
ok( jQuery.isXMLDoc( jQuery("tab", xml)[0] ), "XML Tab Element" );
start();
});
});
}

test("jQuery('html')", function() {
expect(8);

@@ -611,4 +644,4 @@ test("jQuery.isEmptyObject", function(){

// What about this ?
// equals(true, jQuery.isEmptyObject(null), "isEmptyObject on null" );
});
});

0 comments on commit 2cd9ee3

Please sign in to comment.
You can’t perform that action at this time.