Булево выражение Javascript возвращает true в окне просмотра Firebug, но false в коде? - PullRequest
1 голос
/ 11 февраля 2009

У меня есть веб-страница с 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.

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

Ответы [ 3 ]

1 голос
/ 11 февраля 2009

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

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

    dojo.byId ("ajaxProgress"). Style.visibility = "hidden";

    var status = responseObject.status;

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

0 голосов
/ 11 февраля 2009

Я бы пошел с

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

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

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

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

0 голосов
/ 11 февраля 2009

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

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

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

...