IE11 Javascript错误未定义空引用

IE11 Javascript错误未定义空引用,javascript,internet-explorer,internet-explorer-11,Javascript,Internet Explorer,Internet Explorer 11,我在IE11中遇到了一个javascript错误,该错误禁用了鼠标在页面上的滚动。我想知道代码的问题是什么,以及是否可以很容易地修改以修复它 错误是: {exception}无法获取未定义或空引用的属性“length” 它出现在这段代码的第8行,如图所示,它是一个空引用: return { add: function(elem, event, handler) { if(!elem.events) { elem.events

我在IE11中遇到了一个javascript错误,该错误禁用了鼠标在页面上的滚动。我想知道代码的问题是什么,以及是否可以很容易地修改以修复它

错误是: {exception}无法获取未定义或空引用的属性“length”

它出现在这段代码的第8行,如图所示,它是一个空引用:

return {
        add: function(elem, event, handler) {
            if(!elem.events) {
                elem.events = {};
                elem.handle = function(e) {
                    var ret, handlers = elem.events[e.type];
                    e = fixEvent(e);
                    for(var i = 0, len = handlers.length; i < len; i++) {
                        if(handlers[i]) {
                            ret = handlers[i].call(elem, e);
                            if(ret === false) {
                                e.preventDefault();
                                e.stopPropagaton();
                            }
                        }
                    }
                };
            }
            if(!elem.events[event]) {
                elem.events[event] = [];
                if(elem.addEventListener) elem.addEventListener(event, elem.handle, false);
                else if(elem.attachEvent) elem.attachEvent('on'+event, elem.handle);
            }
            elem.events[event].push(handler);
        },
        remove: function(elem, event, handler) {
            var handlers = elem.events[event];
            for(var i = handlers.length - 1; i >= 0; i--) {
                if(handlers[i] === handler) {
                    handlers.splice(i,1);
                }
            }
            if(!handlers.length) {
                delete elem.events[event];
                if(elem.removeEventListener) elem.removeEventListener(event, elem.handle, false);
                else if(elem.detachEvent) elem.detachEvent('on'+event, elem.handle);
            }
        }
    };  
返回{
添加:函数(元素、事件、处理程序){
如果(!元素事件){
elem.events={};
元素句柄=函数(e){
var ret,handlers=elem.events[e.type];
e=固定事件(e);
for(var i=0,len=handlers.length;i=0;i--){
if(处理程序[i]==处理程序){
3.拼接(i,1);
}
}
if(!handlers.length){
删除要素事件[事件];
if(elem.removeEventListener)elem.removeEventListener(事件,elem.handle,false);
else if(elem.detachEvent)elem.detachEvent('on'+事件,elem.handle);
}
}
};  

它告诉您,
handlers=elem.events[e.type]
的结果是处理程序的值未定义。@InvernoMuto-也许您会指出输入错误是什么?谢谢大家,我刚刚添加了一个条件,仅当(处理程序)出现时才执行该循环,问题神奇地消失了。页面在IE11中再次滚动。你有你更改的完整代码块吗?