[Proto-Scripty] Re: form.serialize not working in IE8

2011-06-15 Thread T.J. Crowder
Hi,

On Jun 14, 5:40 pm, Don donlope...@gmail.com wrote:
 form.serialize in IE8 is returning a blank string, even though there
 are elements.  Should this be working in IE8?

That seems really unlikely. What does your form look like? And in
particular, do the form fields have `name` values (rather than `id`s)?
--
T.J. Crowder
Independent Software Engineer
tj / crowder software / com
www / crowder software / com

-- 
You received this message because you are subscribed to the Google Groups 
Prototype  script.aculo.us group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.



[Proto-Scripty] Re: form.serialize not working in IE8

2011-06-15 Thread Don
On Jun 15, 2:25 am, T.J. Crowder t...@crowdersoftware.com wrote:
 Hi,

 On Jun 14, 5:40 pm, Don donlope...@gmail.com wrote:

  form.serialize in IE8 is returning a blank string, even though there
  are elements.  Should this be working in IE8?

 That seems really unlikely. What does your form look like? And in
 particular, do the form fields have `name` values (rather than `id`s)?

I figured it out.  I was wiping out the form by setting the innerHTML
property of a parent div before calling form.serialize.  Interestingly
though, this worked in previous versions of IE and still does in
virtually every other browser, if you have a reference to the form
before wiping it out.

-- 
You received this message because you are subscribed to the Google Groups 
Prototype  script.aculo.us group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.



[Proto-Scripty] Re: form.serialize not working in IE8

2011-06-15 Thread T.J. Crowder
 I figured it out.  I was wiping out the form by setting the innerHTML
 property of a parent div before calling form.serialize.  Interestingly
 though, this worked in previous versions of IE and still does in
 virtually every other browser, if you have a reference to the form
 before wiping it out.

If you have a reference to the form's DOM element prior to setting
`innerHTML`, it should remain valid. I found it so surprising that IE8
would get this wrong that (with apologies) I had to test it for
myself. But I can easily replicate your result on IE6 - IE9:

http://jsbin.com/elihi5

It only happens if you remove the form by setting `innerHTML` on its
parent, though. If you remove it via DOM `removeChild`, it works
correctly:

http://jsbin.com/elihi5/2

So it's down to how IE handles setting `innerHTML`. Apparently, doing
so destroys the parent/child relationship of the elements therein, as
we can see here:

http://jsbin.com/elihi5/5

If I use `innerHTML` to clear it, although my reference to the form
remains valid, the form no longer has any children. If I already have
a reference to one of its children, my reference remains valid, but
the form still loses that child.

Very surprising behavior. I suppose since `innerHTML` is a Microsoft
invention and hasn't until recently[1] been subject to any
standardization, calling this wrong (as I did above) is harsh. But
really, really surprising.

Thanks for letting us know about it!

[1] http://www.w3.org/TR/html5/apis-in-html-documents.html#dom-innerhtml
--
T.J. Crowder
Independent Software Engineer
tj / crowder software / com
www / crowder software / com

On Jun 16, 12:07 am, Don donlope...@gmail.com wrote:
 On Jun 15, 2:25 am, T.J. Crowder t...@crowdersoftware.com wrote:

  Hi,

  On Jun 14, 5:40 pm, Don donlope...@gmail.com wrote:

   form.serialize in IE8 is returning a blank string, even though there
   are elements.  Should this be working in IE8?

  That seems really unlikely. What does your form look like? And in
  particular, do the form fields have `name` values (rather than `id`s)?

 I figured it out.  I was wiping out the form by setting the innerHTML
 property of a parent div before calling form.serialize.  Interestingly
 though, this worked in previous versions of IE and still does in
 virtually every other browser, if you have a reference to the form
 before wiping it out.

-- 
You received this message because you are subscribed to the Google Groups 
Prototype  script.aculo.us group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.



[Proto-Scripty] Re: form.serialize not working in IE8

2011-06-15 Thread T.J. Crowder
And just because so many things about forms are special in IE, just a
quick note that this is not specific to forms, the same thing happens
to other content within the area being cleared:

http://jsbin.com/elihi5/6

-- T.J. :-)

On Jun 16, 4:16 am, T.J. Crowder t...@crowdersoftware.com wrote:
  I figured it out.  I was wiping out the form by setting the innerHTML
  property of a parent div before calling form.serialize.  Interestingly
  though, this worked in previous versions of IE and still does in
  virtually every other browser, if you have a reference to the form
  before wiping it out.

 If you have a reference to the form's DOM element prior to setting
 `innerHTML`, it should remain valid. I found it so surprising that IE8
 would get this wrong that (with apologies) I had to test it for
 myself. But I can easily replicate your result on IE6 - IE9:

 http://jsbin.com/elihi5

 It only happens if you remove the form by setting `innerHTML` on its
 parent, though. If you remove it via DOM `removeChild`, it works
 correctly:

 http://jsbin.com/elihi5/2

 So it's down to how IE handles setting `innerHTML`. Apparently, doing
 so destroys the parent/child relationship of the elements therein, as
 we can see here:

 http://jsbin.com/elihi5/5

 If I use `innerHTML` to clear it, although my reference to the form
 remains valid, the form no longer has any children. If I already have
 a reference to one of its children, my reference remains valid, but
 the form still loses that child.

 Very surprising behavior. I suppose since `innerHTML` is a Microsoft
 invention and hasn't until recently[1] been subject to any
 standardization, calling this wrong (as I did above) is harsh. But
 really, really surprising.

 Thanks for letting us know about it!

 [1]http://www.w3.org/TR/html5/apis-in-html-documents.html#dom-innerhtml
 --
 T.J. Crowder
 Independent Software Engineer
 tj / crowder software / com
 www / crowder software / com

 On Jun 16, 12:07 am, Don donlope...@gmail.com wrote:







  On Jun 15, 2:25 am, T.J. Crowder t...@crowdersoftware.com wrote:

   Hi,

   On Jun 14, 5:40 pm, Don donlope...@gmail.com wrote:

form.serialize in IE8 is returning a blank string, even though there
are elements.  Should this be working in IE8?

   That seems really unlikely. What does your form look like? And in
   particular, do the form fields have `name` values (rather than `id`s)?

  I figured it out.  I was wiping out the form by setting the innerHTML
  property of a parent div before calling form.serialize.  Interestingly
  though, this worked in previous versions of IE and still does in
  virtually every other browser, if you have a reference to the form
  before wiping it out.

-- 
You received this message because you are subscribed to the Google Groups 
Prototype  script.aculo.us group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.