复选框上的点击和更改事件顺序是否有标准?

str*_*obo 18 javascript checkbox onchange onclick javascript-events

我注意到Chrome和Firefox中"点击"和"更改"事件的顺序不同.

请参阅此JSFiddle例如:http://jsfiddle.net/5jz2g/3/

JavaScript的:

var el = $('foo');
var fn = function(e) {
    console.log(e.type);
}
el.addEvent('change', fn);
el.addEvent('click', fn);
Run Code Online (Sandbox Code Playgroud)

在Chrome中,这会记录:

change
click
Run Code Online (Sandbox Code Playgroud)

在Firefox中,这会记录:

click
change
Run Code Online (Sandbox Code Playgroud)

事件顺序是否有标准?哪个先开火?MDN似乎没有提到这一点,我在W3C文档中找不到相关内容.

rai*_*dev 7

DOM3 Events文档提供有关事件顺序的建议.根据它在复选框的情况下,正确的顺序将click随后change而不是相反,因为change事件显然是复选框的默认操作的一部分,见例5小提琴,如预期在FF,但无法在Chrome其中工程.无论如何,这是合乎逻辑的.但!让我们仔细阅读默认操作部分:

应在事件发送完成后执行默认操作,但在特殊情况下也可以在调度事件之前立即执行.

你看到了吗?W3C 在一句话中使用RFC的单词SHOULDMAY!没什么可做的,他们是谨慎的家伙.IMO,这就是为什么我们拥有我们拥有的东西:)