【问题标题】:Why does .fireEvent() not trigger in IE9?为什么 .fireEvent() 不会在 IE9 中触发?
【发布时间】:2012-03-31 15:41:36
【问题描述】:

在 IE9 中度过了一段令人沮丧的时光。此代码适用于 IE7/8,但不适用于 9。

document.getElementById('id').fireEvent("OnChange");

任何关于为什么的见解?

【问题讨论】:

    标签: javascript internet-explorer dom-events internet-explorer-9


    【解决方案1】:

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

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

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

    【讨论】:

    • 通过检查if (id.dispatchEvent) 然后else if (id.fireEvent) 我现在可以使用非ie8 代码为ie9 工作。看来 IE 终于流行起来了?
    • 没错。您可以将触发代码提取到将处理所有浏览器的单独方法中。
    • 作为附加信息,这仅适用于活动 DOM 中的元素。如果您动态地创建对象并希望使用 dispatchEvent 模拟点击它们之类的事情,那么您必须首先将它们添加到 DOM。如果你不这样做,你仍然可以调度事件,但你会想知道为什么函数在没有触发事件处理程序的情况下成功运行。
    猜你喜欢
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 2010-12-08
    • 2016-01-21
    • 2011-06-24
    • 2014-07-01
    相关资源
    最近更新 更多