Bug Tracker

Opened 8 years ago

Closed 8 years ago

#10593 closed bug (invalid)

The "href" attribute of <a> element lost when using append() in old IE

Reported by: abiao.chen Owned by: abiao.chen
Priority: low Milestone: None
Component: manipulation Version: 1.7b2
Keywords: Cc:
Blocked by: Blocking:

Description

After calling append() to add a element by passing a string arg which declares an <a> element with both "href" and "onclick" attributes, I found in some IE versions (such as IE <9 on windows server 2003) the "href" attribute was lost.

I traced the execution and found in cloneAttributes() function:

  1. Each of src&dest had the "href" attribute at the beganning.
  2. All the attributes of dest was cleaned by cleanAttribute().
  3. The "href" attribute was missed when merge the src attribute into dest by calling mergeAttributes().

Does this a jQuery or IE problem?

Here is the HTML file:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<script type="text/javascript" src="jquery-1.5.min.js"></script>
		<script>
			function addcontent() {
				$("div").append('<a href="javascript:b;" onclick="alert(0)">link3</a>');
			}

			$(document).ready(addcontent);
		</script>
</head>
<body>
	<a href="javascript:x;" onclick="alert(0)">link1</a>
	<div></div>
</body>

Change History (3)

comment:1 Changed 8 years ago by timmywil

Component: unfiledmanipulation
Owner: set to abiao.chen
Priority: undecidedlow
Status: newpending

Thanks for taking the time to contribute to the jQuery project! Please provide a complete reduced test case on jsFiddle to help us assess your ticket.

Additionally, be sure to test against the jQuery Edge version to ensure the issue still exists. To get you started, use this boilerplate: http://jsfiddle.net/FrKyN/ Open the link and click to "Fork" (in the top menu) to get started.

comment:2 Changed 8 years ago by abiao.chen

Status: pendingnew

I found this bug in IE6 and tried jsFiddle. While in IE6, jsFiddle doesn't work and cannot test this bug. Thus, I paste my code here.

comment:3 Changed 8 years ago by timmywil

Resolution: invalid
Status: newclosed

The javascript pseudo protocol has many issues in IE6. I recommend steering clear of using it.

Note: See TracTickets for help on using tickets.