2009-02-10 7 views
1

J'ai une page web avec un IFrame nommé "objFrame".L'expression Javascript booléenne renvoie true dans la fenêtre Firebug Watch, mais false dans le code?

Dans un fichier Javascript, l'instruction suivante est exécutée:

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

Lors de l'exécution du code (normalement ou pas à pas dans avec le débogueur), l'expression

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

est vrai quand je le colle dans la fenêtre Watch dans Firebug, mais useWindow obtient la valeur false. J'utilise Firefox 3.0.6 avec Firefox 1.3.2.

Qu'est-ce qui me manque ici? S'il vous plaît dites-moi que c'est une erreur syntaxique simple de ma part (?!?)

Répondre

0

Il peut être utile si vous écrivez des instructions de journal, en imprimant la valeur entière, et aussi le résultat "typeof" pour chaque composant. Entrez également ceux dans la console Firebug.

Est-ce que "window.objFrame" n'est pas seulement dans le DOM IE?

Cela n'aurait-il pas plus de sens de poser des questions de ce genre dans le forum Firebug ou comp.lang.javascript?

1

Je l'ai vu quelque chose comme ça avec Firebug aussi bien, et nous avons trouvé deux problèmes/solutions de contournement:

  • Après quelques trucs bizarres commence à se produire dans Firebug, le redémarrage de Firefox permet souvent
  • j'utilisais dojo et voir une chose dans le débogueur et une autre chose se produisant réellement avec un modèle de code comme ceci (status = true dans Firebug mais vraiment indéfini):

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

    var état = réponseObjet.état;

Une fois que j'ai changé l'ordre de ces lignes, les choses ont commencé à correspondre à la réalité.

0

je partirais avec

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

si possible.

Je pense que c'est ce que vous essayez de détecter, mais vérifier le typeof (null) me semble un peu flou.

(S'il y a une bonne raison pour que cela ne fonctionne pas, ignorez-moi :))

Questions connexes