我只是在IE10和Chrome浏览器上测试相同的代码。
<div id='a'><input onclick="console.log('a');"/></div>
<div id='b'><button onclick="alert('b');"/></div>`
我在两个不同的div标签中放入两个不同的输入标签和按钮。 两个元素(输入,按钮)都有onclick属性。
我做的很简单
我在IE10和Chrome上试过这个。
在chrome浏览器中,附加在按钮上的事件处理程序尚未执行。 但是在IE中,附加在按钮上的事件处理程序已经执行。
任何人都可以告诉我为什么会发生这场灾难
答案 0 :(得分:0)
此行为与隐式表单提交有关,Chrome已根据HTML5规范正确实施。您可以浏览规范here。
简而言之,在文本字段聚焦时“按下回车键”会调用浏览器控制的隐式表单提交,然后查找“表单”元素下的第一个提交按钮并调用附加的处理程序。
在你的情况下,'button'元素默认为'submit'类型,但由于它不是'form'元素的后代,因此不会被调用。
您可以假设当前的IE行为不符合规范。
答案 1 :(得分:0)
它与IE的选择提交按钮的算法有关。即使没有表格标签,您的按钮也会被视为一个按钮。
<button onclick="alert('b');"/> has default type = "submit"
您可以通过使用按钮1更改类型来更改它。
<button type="button" onclick="alert('b');"/>