jquery-dev

[Prev] Thread [Next]  |  [Prev] Date [Next]

[jquery-dev] Re: IE issue with .append? Ricardo Tue Jun 23 03:00:27 2009

Why support bad mark-up? Adding the slash costs nothing.

On Jun 23, 1:27 am, Daniel Friesen <[EMAIL PROTECTED]> wrote:
> 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<[EMAIL PROTECTED]> 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<[EMAIL PROTECTED]> 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<[EMAIL PROTECTED]> wrote:
>
> >>>>>> I've been having trouble with a bit of jQuery that works in FF, Opera,
> >>>>>> and Midori, but breaks in IE.
>
> >>>>>> Seehttp://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 [EMAIL PROTECTED]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/jquery-dev?hl=en
-~----------~----~----~----~------~----~------~--~---