Doctuh wrote: > ... > > <form id="foo"> > <input type="hidden" name="id' value="bar" /> > </form> > > If you have a form with a hidden form element named 'id', and you try > to use readAttribute() on the form you will get two different > responses: > > IE gives you an Object (the input object named 'id') > Firefox gives you 'foo'. > > IE will give you 'foo' if there is not a overriding form element. > > ... > > I can confirm that using element.id, element.readAttribute('id'), and element.getAttribute('id') will always return the same thing as the most explicit form-element access: document.forms[0].elements['id']; In fact, "foo" doesn't seem to be a value for any attribute of the form node--when I iterate through the properties of the foo form, for example, the text "foo" does not show up anywhere. I don't know of any function besides getAttribute that should return it. Somehow the 'id' node (the hidden input) in the form's elements collection overwrites the form node id.
I don't know if there is a good way to normalize this behavior for IE without checking for a form tag and using something hackish like a regex on outerHTML. For example, the code below uses outerHTML and works at least for the case you provided. - Ken Snyder Element.addMethods('form', { readAttribute: function(element, name) { element = $(element); if (Prototype.Browser.IE) { // begin new section if (typeof element[name] == 'object') { var match = new RegExp(RegExp.escape(name) + '=([^ >]+)').exec(element.outerHTML); if (match) return match[1]; } // end new section var t = Element._attributeTranslations.read; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name = t.names[name]; if (name.include(':')) { return (!element.attributes || !element.attributes[name]) ? null : element.attributes[name].value; } } return element.getAttribute(name); } }); --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Prototype: Core" group. To post to this group, send email to prototype-core@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/prototype-core?hl=en -~----------~----~----~----~------~----~------~--~---