为什么.fireEvent()在IE9中不起作用?

sty*_*972 9 javascript internet-explorer javascript-events internet-explorer-9

这与IE9相比令人沮丧.此代码适用于IE7/8,但不适用于9.

document.getElementById('id').fireEvent("OnChange");
Run Code Online (Sandbox Code Playgroud)

任何洞察力为什么?

Str*_*lok 24

在IE版本> = 9和所有其他浏览器中,您应该使用该dispatchEvent方法:

var event = document.createEvent("HTMLEvents");
event.initEvent("change",true,false);

document.getElementById("id").dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)

查看http://jsfiddle.net/QKsvv/

  • 作为附加信息,这仅适用于实时DOM中的元素.如果您使用dispatchEvent动态创建对象并希望模拟诸如点击它们之类的内容,则您必须*首先将它们添加到DOM中.如果你不这样做,你仍然可以派遣事件,但是你会想知道为什么函数成功运行而不触发你的事件处理程序. (4认同)