Pergunta

Este código provoca um estranho bug no IE8. Ela vem de MicrosoftAjaxAdoNet.js em link de texto

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

Antes de chamar esta função, this._changesetEntries é sempre nulo. Eu esperava his._changesetEntries vai se tornar um array vazio após esta função é chamada. Foi o que aconteceu como esperado no Chrome, Firefox, IE8. Nem sempre é verdade no IE8, descobri que, por vezes, esta função criar um método " indexOf (v, n) " em vez de array vazio.

Este comportamento estranho causa outro erro observado aqui texto do link

EDIT: Eu posso isolar esta questão do meu código agora, este problema ocorre quando eu usar um plug-in jQuery olho de peixe. Neste plug-in, há algo como

[].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;

})

Esta é uma causa deste problema.

Foi útil?

Solução

O 'às vezes' na sua pergunta é a chave aqui: sob que condições this._changesetEntries ter uma função em vez de uma matriz vazia? Algumas cargas página? algumas chamadas para o DataService? Depois de ter um testcase, o answe pode tornar-se mais evidente.

Outras dicas

Você poderia postar como você está usando isso? Tudo o que podemos fazer até lá é especular:

Isto parece um construtor. Você está usando você instanciar usando new Sys$Data$_AdoNetBatchWriter$startChangeSet()?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top