Наличие проблем IE при передаче объекта по Ref.и динамически добавление свойств - PullRequest
1 голос
/ 20 сентября 2011

Итак, я создал функцию для проверки ошибок в файле XML, который я получаю из вызова AJAX. Часть проверки состоит в том, что функция затем создает объект для легкого доступа, пока я обрабатываю эти данные в форме. В FF работает как шарм. IE умирает с ошибкой:

Объект не поддерживает это свойство или метод

Вот функция (за исключением незначительных битов):

function checkReceiveXMLTagString( doc, messageObject, tag ) {

    var tag_nodes = doc.getElementsByTagName( tag );

    ...do some error checking...

    messageObject[tag] = tag_str; <-- error occurs on this line

    return true;
}

Вот пример вызова функции:

if ( checkReceiveXMLTagString( messageObject.Name[0], messageObject.Name[0], "First" ) ) {

    ...process messageObject.Name[0].First...

}

Как я уже сказал, FF не имеет проблем. Safari также загружает страницы. IE имеет проблемы.

Спасибо!

Ответы [ 2 ]

1 голос
/ 21 сентября 2011

Если ошибка находится в этой строке:

messageObject[tag] = tag_str;

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

  1. messageObject isне объект, для которого вы можете установить свойства (null или undefined - наиболее вероятные варианты)
  2. tag равен нулю или не определен

Поскольку яОбратите внимание, что ваш код вызывает эту функцию сотни раз, так что вы не можете просто использовать ее, я бы посоветовал вам применить некоторый защитный код для проверки этих условий и вывести что-то на консоль отладки, чтобы определить, в каком состоянии это происходит, когдапроблема возникает.Вы даже можете вызвать условную точку останова с помощью кода, подобного следующему:

if (!messageObject || !tag) {
    debugger;
}

В самых сложных случаях вы можете поместить обработчик исключения вокруг него и прерывать при возникновении исключения:

try {
    messageObject[tag] = tag_str;
} catch(e) {
    debugger;
}

Оба из них позволят вам записать условие в отладчике и проверить все ваши параметры во время ошибки.

1 голос
/ 20 сентября 2011

Похоже, что-то заставляет messageObject быть null или undefined

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