【问题标题】:Strange js array assign bug in IE8IE8中奇怪的js数组分配错误
【发布时间】:2009-11-27 20:02:42
【问题描述】:

这段代码在 ie8 中引起了一个奇怪的错误。它来自link text中的MicrosoftAjaxAdoNet.js

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

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

这种奇怪的行为会导致这里提到的其他错误 link text

编辑:我现在可以将这个问题从我的代码中隔离出来,当我使用鱼眼 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;

})

这是导致此问题的原因。

【问题讨论】:

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


    【解决方案1】:

    您问题中的“有时”是这里的关键:this._changesetEntries 在什么条件下获得函数而不是空数组?一些页面加载?对数据服务的一些调用?一旦你有了一个测试用例,答案可能会变得更加明显。

    【讨论】:

      【解决方案2】:

      您能发布一下您是如何使用它的吗?在那之前我们所能做的就是推测:

      这看起来像一个构造函数。你在用new Sys$Data$_AdoNetBatchWriter$startChangeSet() 实例化吗?

      【讨论】:

        猜你喜欢
        • 2019-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-26
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        相关资源
        最近更新 更多