Side navigation
#3337 closed bug (worksforme)
Opened September 08, 2008 06:39AM UTC
Closed June 20, 2010 07:21PM UTC
find('*') is borked in a certain case.
Reported by: | wahyudinata | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | 1.3 |
Component: | core | Version: | 1.2.6 |
Keywords: | Cc: | wahyudinata, flesler | |
Blocked by: | Blocking: |
Description
how to repeat:
1. create a textarea with
<object width="464" height="392"><param name="movie" value="http://embed.break.com/NTY2ODcz"></param><param name="allowScriptAccess" value="always"></param><embed src="http://embed.break.com/NTY2ODcz" type="application/x-shockwave-flash" allowScriptAccess=always width="464" height="392"></embed></object><br /><font size=1><a href="http://break.com/index/big-guy-cries-to-stop-fight.html">Big Guy Cries To Stop Fight</a> - Watch more <a href="http://www.break.com/">free videos</a></font>
as the value
2. do var my_text=$($('textarea').val()) //basically converting the html above to a jquery object
3. do a my_text.find('*') you will get several elements but you will not get the EMBED
4. now do my_text.find('embed') you will get the element
the find('*') should get you everything shouldn't it?
Attachments (2)
Change History (6)
Changed September 08, 2008 07:29AM UTC by comment:1
Changed September 08, 2008 10:00PM UTC by comment:2
cc: | → wahyudinata, flesler |
---|---|
need: | Review → Test Case |
Can you turn this loose data into a formal test case ?
a minimalistic html file with the requires html and js to reproduce the problem.
Thanks.
Changed October 16, 2008 04:20PM UTC by comment:3
I have a test case for this, but also I think IE is broken when finding 'embed' tags. Please let me know if I should open a ticket for that. The test case displays the error described above and if you run it in IE , it shows the error when searching for the embed tag.
attaching files
Changed October 16, 2008 07:32PM UTC by comment:4
The problem seems to be in the 'clean' function. The clean function creates a 'div' , sets the innerHtml to the html string, and returns the div's child nodes. The resulting child node in my test case is the 'object' element. However when iterating through the 'object' childNodes , in IE the 'embed' node is just missing. In firefox, the 'embed' node is there, but its not the same type as the 'param' child nodes.
Changed October 16, 2008 08:55PM UTC by comment:5
I think this is the expected behavior. IE ignores embeds, FF ignores objects.
You simply need to "find" them both and append (or whatever you're doing) both. The one accepted will be found by jQuery.
Changed June 20, 2010 07:21PM UTC by comment:6
resolution: | → worksforme |
---|---|
status: | new → closed |
I agree with flesler, the browser will sometimes discard nodes for these cases. It's not feasible for jQuery to manually parse the HTML in order to create a workaround, so the best thing to do is work with the resulting DOM that is created by the browser.
extra info: according to Malen, jquery cannot find the <font> tag, more tests needed