2013-04-10 208 views
1

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

自定义事件创作:

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')); 
+0

如何获得'el'?那么'el'的类型是什么? – outcoldman 2013-04-10 21:39:24

+0

原生dom查询,该对象是类型[object HTMLDivElement]。 – worked 2013-04-11 11:15:56

+0

但'div'没有'onchange'事件,我想这就是为什么你没有得到这个事件。 – outcoldman 2013-04-11 16:55:07

回答

0

好了,所以根据大多数文档的变化事件将触发任何元素,我引述: “更改当元素失去焦点并且其v自从获得重点以来,情况发生了变化。“

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

然而,在< = IE8 平变化将不会触发除了形式元素的任何元件上。这令人难以置信的imo,并使现代MVC自定义事件聆听和调度问题。

长话短说,在我的情况下,我用模糊事件来捕捉我div元素的变化。这对我来说很重要,因为在div元素更新之间删除了重点。这是一个幻灯片应用程序,其中两个div弹出和弹出堆栈,根据当前位置从左到右。