Modify ↓
Ticket #4011 (closed bug: fixed)
Internet explorer 7.0.6001.18000 crashes on append
| Reported by: | jacobww | Owned by: | john |
|---|---|---|---|
| Priority: | major | Milestone: | 1.4 |
| Component: | core | Version: | 1.4a1 |
| Keywords: | Cc: | ||
| Blocking: | Blocked by: |
Description
Running
$('<p></p>').append(" ", " ");
in IE 7.0.6001.18000 will crash the browser. Bug found using the DateInput plugin from http://jonathanleighton.com/projects/date-input
Change History
comment:5 Changed 3 years ago by dmethvin
- Version changed from 1.3.1 to 1.4a1
- Milestone changed from 1.3.2 to 1.4
comment:6 Changed 3 years ago by john
- Status changed from new to closed
- Resolution set to fixed
Landed: http://github.com/jquery/jquery/commit/628e1564c48f2b4d18ed5af89ebed88b09d972d4
Thanks Dave!
Please follow the bug reporting guidlines and use jsFiddle when providing test cases and demonstrations instead of pasting the code in the ticket.
Note: See
TracTickets for help on using
tickets.

The error occurs in IE8 RC1 as well, in jQuery.clean on this line:
It's trying to append the text node in ret[i]. This is new to 1.3; 1.2.6 used a different approach for jQuery.clean. These will work in IE in 1.3:
$('<p></p>').append(" "); $('<p></p>').append("<p>test</p>", "<div>test</div>");but these will not:
$('<p></p>').append(" ", " "); $('<p></p>').append(" ", "<p>test</p>"); $('<p></p>').append("testing", "123");Tracing it in the IE8 debugger, what seems to be happening is that the text node stored in ret becomes invalid when the second argument is processed by assigning into div.innerHTML. In 1.2.6 the div was inside the jQuery.each(elems ... function, but in 1.3 it was hoisted out and accessed by closure. When I moved it back inside the function, IE seemed to be satisfied again.