Странная ошибка назначения массива js в IE8 - PullRequest
1 голос
/ 27 ноября 2009

Этот код вызывает странную ошибку в ie8. Это взято из 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) " вместо пустого массива.

Это странное поведение вызывает другую ошибку, отмеченную здесь текст ссылки

РЕДАКТИРОВАТЬ: я могу теперь изолировать эту проблему от моего кода, эта проблема возникает, когда я использую плагин "рыбий глаз" 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;
* * 1016})

Это причина этой проблемы.

Ответы [ 2 ]

0 голосов
/ 27 ноября 2009

Не могли бы вы опубликовать, как вы используете это? Все, что мы можем сделать до тех пор, это спекулировать:

Это похоже на конструктор. Используете ли вы инстанцирование, используя new Sys$Data$_AdoNetBatchWriter$startChangeSet()?

0 голосов
/ 27 ноября 2009

Ключ «иногда» в вашем вопросе - вот ключ: при каких условиях this._changesetEntries получает функцию, а не пустой массив? Некоторые страницы загружаются? некоторые вызовы к dataService? Если у вас есть тестовый пример, ответ может стать более очевидным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...