JavaScript:document.forms.elements中为什么不出现元素?

JavaScript:document.forms.elements中为什么不出现元素?,javascript,collections,Javascript,Collections,前几天我读到文档.forms[x]。元素集合将不包含类型为image的输入元素。为什么不呢?我在Firefox 50.1.0上查看了这一点,果然在document.forms.elements中找不到输入类型=image 我没有被卡住或其他什么。我只是想知道为什么这不是src=属性和它显示的图像的存在 国家: HTMLFormElement.elements属性返回 所有表单的HTMLFormControlsCollection HTML4 HTMLCollection 表单元素中包含的控件,输

前几天我读到文档.forms[x]。元素集合将不包含类型为image的输入元素。为什么不呢?我在Firefox 50.1.0上查看了这一点,果然在document.forms.elements中找不到输入类型=image

我没有被卡住或其他什么。我只是想知道为什么这不是src=属性和它显示的图像的存在

国家:

HTMLFormElement.elements属性返回 所有表单的HTMLFormControlsCollection HTML4 HTMLCollection 表单元素中包含的控件,输入除外 具有image类型属性的元素

报告说:

elements IDL属性必须返回HTMLFormControlsCollection 以表单元素为根,其筛选器与列出的元素匹配 表单所有者是表单元素,输入元素除外 其类型属性处于图像按钮状态,对于 由于历史原因,不能从该特定收藏中排除

报告说:

图像按钮状态表示用户从中选择的图像 可以选择坐标并提交表单,也可以选择按钮 用户可以从中提交表单。元素是一个按钮, 特别是一个提交按钮


我查阅了大量有关该问题的资料,特别发现了可追溯到1999年7月15日的以下网站:

type=image的输入元素专门用作图像映射,包含其他HTMLFormElement无法或无法提供的属性和特性。我记得它被用于地图和其他图形,用户可以在地图上选择一个特定的位置,坐标被传输回服务器及其cgi应用程序,然后服务器将根据单击的坐标提供内容。在我看来,它是现代浏览器中为数不多的古老遗迹之一,可以被视为僵尸功能

在Mozilla的Bugzilla中还发现了一些问题,这些问题报告了该元素的异常行为,这些行为既不符合图像,也不符合输入元素:

我无法很快找到1998年的Netscape Navigator源代码,也不认为其中会有任何有用的评论。我非常确定这个决定是因为图像输入元素非常奇怪,与其他元素不同,不值得在任何方向上改变其行为的规范、设计和开发工作。在JavaScript核心和DOM中将其作为表单元素实现是不值得的


我所发现的一切都导致了这一结论,但要有实质性的证据,我们需要找到做出决定的人,以及做出导致这一规范决定的第一个实现的人。当然,从历史的角度来看,这是令人兴奋的。

也许您应该遵循提供的链接,这些链接比MDN更具权威性:……但类型属性处于图像按钮状态的输入元素除外,出于历史原因,这些元素必须从该特定集合中排除。说是历史原因。如果没有进一步的解释,这可能意味着他们没有很好的理由,但如果他们不保持向后兼容,就会出现一些问题。@Berg非常早的2003年没有这个限制,因此历史非常悠久。这是一个说明浏览器做什么而不是应该做什么的活规范的例子吗?@RobG是的,所有浏览器暴露相同的bug似乎比修复bug更重要。跨浏览器兼容性高于一切@AnthonyRutledge和纯JavaScript爱好者必须认识到,这些机制仍然像20年前那样工作。你不仅仅是一个狂热者,你还是一个考古学家。总之,input type=image最初的全部意图不仅仅是创建一个装饰性的提交按钮,因此在早期的HTML规范中不需要强制使用值属性。因此,如果没有强制值属性,并且重点放在坐标和图像贴图上,则确定type=图像输入按钮更像图像等。。。然后是其他真正的标量输入类型。没有强制值属性,document.forms[x].elements中没有强制存在。感谢您的真诚努力。