Ok, I agree that $('<div><span></span>') is just plain malformed html 
and doesn't need support.
But to be honest $('<span>') looks like we're saying to create a span 
node, and likewise $('<span attr=val>') like we're trying to create a 
span with a single attr.
Originally when I found out about $('<span>') I wasn't thinking HTML, I 
originally thought "Oh yay, jQuery has a shortcut for 
document.createElement, and after when I saw that $('<span foo=bar />') 
was possible I didn't think HTML, I still thought, createElement + attr 
setting.

Would a patch that just makes $('<span attr=val>') work properly across 
browsers be accepted?

That should be something simple like checking if it starts with < and 
ends with >, contains no other <>'s and doesn't have a / before the > 
then insert a single / before the last > before continuing.

~Daniel Friesen (Dantman, Nadir-Seen-Fire) [http://daniel.friesen.name]

John Resig wrote:
> Unfortunately, there's not really a whole lot that we can do on our
> end to fix a problem like that - short of including a full HTML
> parser/DOM generator.
>
> Now, I've written one:
> http://ejohn.org/blog/pure-javascript-html-parser/
>
> but it's probably just better to make sure that your injected HTML is
> well-formed.
>
> --John
>
>
>
> On Mon, Jun 22, 2009 at 6:45 PM, Daniel
> Friesen<nadir.seen.f...@gmail.com> wrote:
>   
>> I ran into another IE issue with unclosed tag syntax inside node
>> creation (I personally like to leave the / out unless necessary most of
>> the time, especially since it flows fairly nice with .text(userVar)).
>>
>> http://jsbin.com/ejote
>>
>> <span></span>
>> <span />
>> <span/>
>> <span>
>> <span class=foo />
>>
>> All work in ie7, ie8, opera, firefox, and midori.
>>
>> However:
>> <span class=foo>
>> <span class="foo">
>>
>> Fail in ie7 and ie8 while they work in firefox, midori, and opera.
>>
>> Filed as: http://dev.jquery.com/ticket/4806
>>
>> ~Daniel Friesen (Dantman, Nadir-Seen-Fire) [http://daniel.friesen.name]
>>
>> John Resig wrote:
>>     
>>> This is very helpful analysis. I've added it to my todo list. Could
>>> you file a ticket with your test cases, as well? Thanks!
>>> http://dev.jquery.com/newticket
>>>
>>> --John
>>>
>>>
>>>
>>> On Mon, Jun 22, 2009 at 4:33 PM, Daniel
>>> Friesen<nadir.seen.f...@gmail.com> wrote:
>>>
>>>       
>>>> Ok, narrowed it down.
>>>> Someone tells me that Konqueror isn't working for that page either so it
>>>> looks like IE8 and Konqueror may share this behavior.
>>>>  From the looks of it $button.append( "[" ); is working.
>>>>
>>>> $('#bodyContent').append( "[" ); // works
>>>> $('#bodyContent').append( "[", "]" ); // "Invalid argument" in IE8 
>>>> console, works in FF Firebug console
>>>> $('#bodyContent').append( "asdf", "asdf" ); // "Invalid argument" in IE8 
>>>> console, works in FF Firebug console
>>>> $('#bodyContent').append( document.createTextNode("["), "]" ); // works
>>>> $('#bodyContent').append( "<span>foo</span>", "]" ); // in IE8 console 
>>>> only inserts the ']' the foo span is not inserted, works in FF Firebug 
>>>> console
>>>> $('#bodyContent').append( "<span>asdf</span>", "<span>qwerty</span>" ); // 
>>>> in IE8 console only inserts the qwerty span the asdf span is not inserted, 
>>>> works in FF Firebug console
>>>>
>>>> So this looks like an IE8 (maybe Konqueror) issue where when .domManip
>>>> is used (by something like .append) with more than one argument with the
>>>> first being a string a "Invalid argument" error is thrown if the first
>>>> argument is not a valid node string. If the first argument is a valid
>>>> node string, instead the first argument is ignored and the rest are
>>>> inserted.
>>>>
>>>> ~Daniel Friesen (Dantman, Nadir-Seen-Fire) [http://daniel.friesen.name]
>>>>
>>>> John Resig wrote:
>>>>
>>>>         
>>>>> You say that you still have problems if you split apart the query.
>>>>>
>>>>> So in this case $button.append( "[" ) fails - correct?
>>>>>
>>>>> What happens if you do:
>>>>>
>>>>> $button.append( document.createTextNode("[") )
>>>>>
>>>>> --John
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Jun 22, 2009 at 2:09 PM, Daniel
>>>>> Friesen<nadir.seen.f...@gmail.com> wrote:
>>>>>
>>>>>
>>>>>           
>>>>>> I've been having trouble with a bit of jQuery that works in FF, Opera,
>>>>>> and Midori, but breaks in IE.
>>>>>>
>>>>>> See http://animanga.wikia.com/wiki/Sandbox?allinone=0
>>>>>> The code: http://dev.wikia.com/wiki/ShowHide/code.js
>>>>>> (it's on a wiki, so you can see the history of editing)
>>>>>>
>>>>>> Using IE8's debugger tools (yay, finally MS rips of Firebug to give us a
>>>>>> way to find out why IE is breaking /sarcasm) I've narrowed it down to
>>>>>> $button.append( '[', $buttonLink, ']' ); Where jQuery's .append calls
>>>>>> .clean which near the end calls fragment.appendChild( ret[i] ); fragment
>>>>>> is the document, and i is 0, ret is 3 items in length containing the
>>>>>> text node, span, and other text node. jQuery tries to appendChild to the
>>>>>> document and IE decides it doesn't like it.
>>>>>>
>>>>>> Does this seem like a jQuery bug?
>>>>>>
>>>>>> Note: ya, I have tried splitting the append call into three separate
>>>>>> ones, still causes the same issue on the first one.
>>>>>>
>>>>>> --
>>>>>> ~Daniel Friesen (Dantman, Nadir-Seen-Fire) [http://daniel.friesen.name]
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>             
>
> >
>   

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"jQuery Development" group.
To post to this group, send email to jquery-dev@googlegroups.com
To unsubscribe from this group, send email to 
jquery-dev+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/jquery-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to