- From: Simon Pieters <simonp@opera.com>
- Date: Wed, 20 Feb 2008 18:07:17 +0100
- To: public-html <public-html@w3.org>
HTML4 has a <form accept> attribute but DOM2 HTML doesn't have a corresponding HTMLFormElement.accept attribute. WF2 fixes this bug and includes HTMLFormElement.accept. However, this has caused problems for us since some sites depend on it not being supported by having a function called accept() and call that in event handler attributes on the form, like so: <script> function accept() { ... } </script> <form onsubmit="accept()"> ... In Opera, accept refers to the DOM attribute instead of the function, resulting in a TypeError exception. This is because DOM attributes take predecense over functions -- compare with e.g. "method" in other browsers: http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%3Cscript%3E%20function%20method()%20{%20alert(1)%20}%20%3C%2Fscript%3E%3Cform%20onsubmit%3D%27try%20{%20method()%3B%20}%20catch(e)%20{%20w(e)%20}%20return%20false%27%3E%3Cinput%20type%3Dsubmit%3E%3Cscript%3E%20document.forms[0].firstChild.click()%20%3C%2Fscript%3E There are some ways to fix this problem. 1) Make the .accept DOM attribute not override functions in scope. 2) Remove support for .accept DOM attribute but keep the content attribute. 3) Remove support for both .accept and <form accept>. (1) is hairy. (2) is in line with HTML4/DOM2 HTML, but is inconsistent. I don't see any problems with (3). <form accept> is only "fallback" for <input type=file accept> anyway, so, not very useful, and besides it's not really used in the wild. So I'd suggest that the <form accept> attribute be removed from WF2. -- Simon Pieters Opera Software
Received on Wednesday, 20 February 2008 17:07:34 UTC