如何在Javascript中触发个人事件

mat*_*ala 10 javascript javascript-events

我不能在IE中使用Javascript来发起个人事件.在Firefox中工作很棒.

我的代码是:

var evento; 
if(document.createEventObject)  
{  
   evento = document.createEventObject();  
   document.fireEvent('eventoPersonal', evento);     
}  
//FF  
else  
{  
    evento = document.createEvent('Events');  
    evento.initEvent('eventoPersonal',true,false);  
    document.dispatchEvent(evento);  
}
Run Code Online (Sandbox Code Playgroud)

但是当尝试document.fireEvent('eventoPersonal', evento);在IE中执行时,它不起作用.如何在IE中解除自定义事件?

在Internet Explorer中,我在执行的行中收到错误:"无效的参数" document.fireEvent('eventoPersonal', evento);

Oke*_*oke 39

Dean Edward's描述了如何在IE中解决cutom事件

http://dean.edwards.name/weblog/2009/03/callbacks-vs-events/

它靠近文章的底部

var currentHandler;

if (document.addEventListener) {

  // We've seen this code already

} else if (document.attachEvent) { // MSIE

  document.documentElement.fakeEvents = 0; // an expando property

  document.documentElement.attachEvent("onpropertychange", function(event) {
    if (event.propertyName == "fakeEvents") {
      // execute the callback
      currentHandler();
    }
  });

  dispatchFakeEvent = function(handler) {
    // fire the propertychange event
    document.documentElement.fakeEvents++;
  };
}
Run Code Online (Sandbox Code Playgroud)

  • +1这正是他所要求的,即使它在技术上是一种解决方法,它正是原始海报所要求的.(很好找!) (2认同)

Don*_*cht 0

您可能需要考虑使用库来抽象它。两个原型 jquery 都会为你处理这个问题。Jquery 特别擅长让您使用非常简单的代码创建事件。

Jquery 的文档可以在这里找到: http: //docs.jquery.com/Events

  • 是的,但是这些框架如何在 IE 中实现自定义事件名称呢? (11认同)