在我的MVC4应用程序中,我有一些代码将事件日志中的新条目推送到带有SignalR的网页。此代码适用于FireFox,但在IE8中,当新事件添加到事件日志中时,调试器将弹出Error: Object doesn't support this property or method
并停在以下代码中:
this.notifyListeners = function (queryName, evt) {
registeredListeners.forEach(function (item) {
if (item.queryName === queryName) {
item.listener.newEvent(evt);
}
});
};
当我跳过此方法时,调试器关闭,并且事件显示在页面上。为什么会发生这种情况?我该如何解决这个问题?
答案 0 :(得分:1)
forEach
进行填充
像这里建议的那样:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
if (!Array.prototype.forEach)
{
Array.prototype.forEach = function(fun /*, thisArg */)
{
"use strict";
if (this === void 0 || this === null)
throw new TypeError();
var t = Object(this);
var len = t.length >>> 0;
if (typeof fun !== "function")
throw new TypeError();
var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
for (var i = 0; i < len; i++)
{
if (i in t)
fun.call(thisArg, t[i], i, t);
}
};
}
或执行标准for
循环,例如:
this.notifyListeners = function (queryName, evt) {
var item={};
for (i=0;i<registeredListeners.length;i++){
item = registeredListeners[i];
if (item.queryName === queryName) {
item.listener.newEvent(evt);
}
}
};