奇怪的js数组在IE8中分配错误

时间:2009-11-27 20:02:42

标签: javascript asp.net-ajax internet-explorer-8

此代码在ie8中导致一个奇怪的错误。它来自link text

中的MicrosoftAjaxAdoNet.js
   function Sys$Data$_AdoNetBatchWriter$startChangeSet() {
        this._changesetBoundary = "changeset_" + this._createBoundary();
        this._changesetEntries = [];
    }

在调用此函数之前,this._changesetEntries始终为null。我希望在调用此函数后,his._changesetEntries将变为空数组。它发生在chrome,firefox,ie8中。在ie8中并不总是如此,我发现有时这个函数会创建一个方法“ indexOf(v,n)”而不是空数组。

这种奇怪的行为导致了link text

中提到的其他错误 编辑:我现在可以将此问题从我的代码中隔离出来,当我使用fish-eye jquery插件时会出现此问题。在这个插件中,有类似

的内容
[].indexOf || (Array.prototype.indexOf = function (v, n) {
n = (n == null) ? 0 : n;
var m = this.length;
for (var i = n; i < m; i++)
if (this[i] == v) return i;
return -1;

})

这是此问题的原因。

2 个答案:

答案 0 :(得分:0)

你问题中的'有时'是关键所在:this._changesetEntries在什么条件下获得函数而不是空数组?有些页面加载?一些调用dataService?一旦你有了测试用例,答案就会变得更加明显。

答案 1 :(得分:0)

你能发布你如何使用它吗?我们所能做的就是推测:

这看起来像一个构造函数。您是否正在使用new Sys$Data$_AdoNetBatchWriter$startChangeSet()进行实例化?