// 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
});
});
+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);
// What about this ?
// equals(true, jQuery.isEmptyObject(null), "isEmptyObject on null" );
-});
\ No newline at end of file
+});