JavaScript +无效参数错误与fireEvent('onchange')

JavaScript + invalid argument error with fireEvent('onchange')

本文关键字:onchange fireEvent 无效 参数 错误 JavaScript      更新时间:2023-09-26

一些简单的事件驱动代码。无论出于何种原因,我似乎无法将'onchange'作为参数传递给fireEvent()。在IE 7/8中抛出无效参数错误。这个项目需要是原生的。什么帮助?

自定义事件创建:

    createCustomEvent : function(eventName) {
        var evt;
        if(document.createEvent) {
            evt = document.createEvent('CustomEvent');
            evt.initEvent(eventName, true, true);
        }else if(document.createEventObject) {
            evt = document.createEventObject();
            evt.eventName = eventName;
        }
        return evt;
    },
    dispatchCustomEvent : function (el, evt) {
        if(el.dispatchEvent) {
            el.dispatchEvent(evt);
        }else if(el.fireEvent) {
            console.log('on'+evt.eventName); //onchange
            el.fireEvent('on'+evt.eventName, evt);
        }
    }

用法:

dispatchCustomEvent(element, createCustomEvent('change'));

好的,所以根据大多数文档,change事件将在任何元素上触发,我引用:change事件在元素失去焦点且其值在获得焦点后发生变化时触发。

https://developer.mozilla.org/en-US/docs/DOM/Mozilla_Event_Reference/change

然而,在<= ie8 onchange将不会触发任何元素,除了表单元素。这是令人难以置信的蹩脚,并使现代MVC自定义事件侦听和调度成为一个问题。

长话短说,在我的例子中,我使用了blur事件来捕捉div元素的变化。这对我来说是有效的,因为焦点在div元素更新之间被删除。这是一个幻灯片应用程序,其中两个div弹出和关闭堆栈,从左到右取决于当前位置。