答案 0 :(得分:2)
blur
:
当事件目标失去焦点时,用户代理必须调度此事件。在发送此事件类型之前,必须从元素中获取焦点。
当事件目标获得焦点时,用户代理必须调度此事件。在发送此事件类型之前,必须将焦点放在元素上。
由于没有两个元素可以同时具有焦点,因此blur
必须在focus
之前出现。
答案 1 :(得分:0)
运行以下代码段并将输入对焦在左侧,然后点击右侧的输入,您会看到顺序是模糊的 - >焦点 - >焦点,(在Chrome中),但是如果你在Safari中检查它,它将会模糊 - >焦点 - >焦点。所以现在,您不能假设不同的用户代理实现相同的事件顺序。此外,焦点和模糊基本上是一回事。不同的是,模糊事件不会冒泡。
编辑:为了响应你的编辑,在焦点之前总是会出现模糊。
var i1 = document.getElementById("i1");
var i2 = document.getElementById("i2");
var whatHappened = document.getElementById("whatHappened");
i1.addEventListener("focusout", function() {
var p = document.createElement("P");
p.innerText = "focusout";
whatHappened.appendChild(p);
});
i1.addEventListener("blur", function() {
var p = document.createElement("P");
p.innerText = "blur";
whatHappened.appendChild(p);
});
i2.addEventListener("focus", function() {
var p = document.createElement("P");
p.innerText = "focus";
whatHappened.appendChild(p);
});

<input type="text" id="i1" />
<input type="text" id="i2" />
<div id="whatHappened"></div>
&#13;