报此错误的原因是:IE中对Array类型不支持indexOf方法
解决方法:
1,本质上:全局添加如下代码
if (!Array.indexOf) {
Array.prototype.indexOf = function (obj) {
for (var i = 0; i < this.length; i++) {
if (this[i] == obj) {
return i;
}
}
return -1;
}
}
2.在调用的地方进行判断:(某个应用实例)
/**
* 注册事件
* @param {EventType} type 事件类型
* @param {Function} func 函数
* @param {object} 对象
*/
this.register = function (type, func, obj) {
if(typeof this.eventTypes.indexOf == "function")
{
if ((func != null) && this.eventTypes.indexOf(type) > -1) {
if (obj == null) {
obj = window;
}
var listeners = this.listeners[type];
listeners.push({ obj: obj, func: func });
}
}
else
{
var idx, i = 0;
for (var len = this.eventTypes.length; i < len; i++) {
if (this.eventTypes[i] == type) {
idx = i;
break;
}
}
if(i == this.eventTypes.length)idx = -1;
if ((func != null) && idx > -1) {
if (obj == null) {
obj = window;
}
var listeners = this.listeners[type];
listeners.push({ obj: obj, func: func });
}
}
};