Логическое выражение Javascript возвращает true в окне Firebug Watch, но false в коде?

У меня есть веб-страница с IFrame с именем «objFrame».

В файле Javascript выполняется следующий оператор:

var useWindow = (typeof(window.objFrame) != "undefined" && typeof(window.objFrame.contentWindow) != "undefined");

При выполнении кода (обычно или пошагово с помощью отладчика) выражение

(typeof(window.objFrame) != "undefined" && typeof(window.objFrame.contentWindow) != "undefined")

имеет значение true, когда я вставляю его в окно Watch в Firebug, но useWindow получает значение false.

Я использую Firefox 3.0.6 с Firebug 1.3.2.

Что мне здесь не хватает? Скажите, пожалуйста, что это простая синтаксическая ошибка с моей стороны (?!?)


person Joergen Bech    schedule 10.02.2009    source источник


Ответы (3)


Я также видел что-то подобное с Firebug и нашел две проблемы/обходные пути:

  • После того, как в Firebug начинают происходить странные вещи, часто помогает перезапуск Firefox.
  • Я использовал dojo и видел одно в отладчике, а другое на самом деле происходило с таким шаблоном кода (статус = true в Firebug, но на самом деле не определено):

    dojo.byId("ajaxProgress").style.visibility = "скрытый";

    статус var = responseObject.status;

как только я изменил порядок этих строк, все стало соответствовать реальности.

person Heikki Toivonen    schedule 10.02.2009

Это может помочь, если вы пишете операторы журнала, печатая все значение, а также результат «typeof» для каждого компонента. Также введите их в консоль Firebug.

Разве «window.objFrame» не только в IE DOM?

Не лучше ли задавать такие вопросы либо на форуме Firebug, либо на comp.lang.javascript?

person David M. Karr    schedule 10.02.2009

я бы пошел с

var useWindow = (window.objFrame != null
    && window.objFrame.contentWindow != null);

если вообще возможно.

Я думаю, это то, что вы пытаетесь обнаружить, но проверка typeof(null) кажется мне немного ненадежной.

(Если есть веская причина, по которой это не сработает, игнорируйте меня :))

person teedyay    schedule 10.02.2009