2013-04-10 209 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彈出和彈出堆棧,根據當前位置從左到右。