[Proto-Scripty] Re: form.serialize not working in IE8
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
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
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
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.