Bug Tracker

Ticket #220 (new )

Opened 2 years ago

Last modified 1 year ago

Nathan

Reported by: jaq@… Assigned to: anonymous
Type: Priority:
Milestone: Component:
Version: Keywords: Nathan
Cc: Nathan Needs:

Description

I am using jQuery to work with XML documents that are parsed in the browser. However using the .attr(String) method fails with an error in IE.

I have tracked down the problem, which appears to be different implementations of 'getAttribute' between the HTML DOM and XMLDOM in IE.

I have attached a patch with a test case and my fix. Unfortunately the fix consists of catching the error and calling the other version of the function, which seems a bit clunky.

Attachments

Change History

Changed 2 years ago by jaq@…

Index: src/jquery/jquery.js
===================================================================
--- src/jquery/jquery.js	(revision 361)
+++ src/jquery/jquery.js	(working copy)
@@ -392,6 +392,14 @@
 	 * @test ok( $('#name').attr('name') == "name", 'Check for name attribute' );
 	 * @test ok( $('#text1').attr('name') == "action", 'Check for name attribute' );
 	 * @test ok( $('#form').attr('action') == "formaction", 'Check for action attribute' );
+	 * @test var xmltext = '<test><child myattr="hello"/></test>';
+	 * var xmldoc;
+	 * try {
+	 * 	xmldoc = new DOMParser().parseFromString(xmltext, 'text/xml');
+	 * } catch(ex) {
+	 *	xmldoc = new ActiveXObject('Microsoft.XMLDOM'); xmldoc.loadXML(xmltext);
+	 * }
+	 * ok( $('child', xmldoc).attr('myattr') == "hello", 'Check for read attribute from XML doc' );
 	 *
 	 * @name attr
 	 * @type Object
@@ -1824,9 +1832,13 @@
 		if ( fix[name] ) {
 			if ( value != undefined ) elem[fix[name]] = value;
 			return elem[fix[name]];
-		} else if ( elem.getAttribute != undefined ) {
+		} else if ( typeof elem.getAttribute != "undefined" ) {
 			if ( value != undefined ) elem.setAttribute( name, value );
-			return elem.getAttribute( name, 2 );
+			try {
+				return elem.getAttribute( name, 2 );
+			} catch(ex) {
+				return elem.getAttribute(name);
+			}
 		} else {
 			name = name.replace(/-([a-z])/ig,function(z,b){return b.toUpperCase();});
 			if ( value != undefined ) elem[name] = value;

Changed 2 years ago by jaq@…

Oh I forgot to say the patch is against SVN revision 361.

Changed 2 years ago by john

  • status changed from new to closed
  • resolution set to fixed

This has been fixed in the latest SVN.

Changed 2 years ago by Nathan

  • cc changed from "" to Nathan
  • component set to 1
  • summary changed from in IE .attr(String) fails with an error on an XMLDOM document to Nathan
  • priority set to 1
  • version set to 1
  • milestone set to 1
  • keywords changed from attr xml to Nathan
  • type set to 1

Changed 2 years ago by http://viagra.free-blog-hosting.com/

<a href="http://viagra.free-blog-hosting.com/">buy viagra</a> f1ngertest76651

Note: See TracTickets for help on using tickets.