2010-07-15 3 views
1

Je viens de commencer à faire du travail Javascript pour un projet, je fais surtout du backend, donc je suis désolé d'être nouveau! De plus, je n'utilise pas de framework Javascript car je veux apprendre les fondamentaux avant de tout simplifier pour moi :)TRÈS confus - le javascript n'est pas en cours d'exécution - sauf si la console est activée dans Firebug?

Alors, voici ma question/confusion: j'ai écrit un petit javascript qui a dynamiquement changé de formes. Voici comment j'ai appelé le code:

// loads the initial box 
window.onload = initList(environment_box); 

// loads artifacts on each change to environment select box 
environment_box.onchange = changeList; 

Cela a fonctionné comme par magie - en CHROME c'est! Je n'ai jamais remarqué que ça ne fonctionnait pas dans Firefox (c'est juste un outil interne, donc je peux supposer que les navigateurs sont corrects, mais je me dis, si ça marche dans Chrome, ça marchera dans Firefox!). Donc, j'ai fait une enquête, et il semble que le code ne soit pas exécuté dans Firefox. J'ai sorti un firebug et j'ai voulu voir ce qui se passait. La chose intéressante était, quand j'ai activé la console sur firebug, mon code a été exécuté! Je suis très confus quant à pourquoi, et j'apprécierais beaucoup toute aide que je pourrais obtenir. Merci!

-Shawn

+0

Essayez d'ajouter un simple 'alert()' à votre code pour voir si quelque chose est en train de se déclencher. Vous pouvez avoir un problème intermittent dans vos fonctions causant le code de travailler/échouer conditionnellement. – HurnsMobile

Répondre

10

Vous appelez une méthode sur console dans votre JavaScript est ma meilleure estimation. Chrome a console défini par défaut, donc ce n'est pas un problème.

Sur Firefox, cependant, il n'y a pas un tel objet global (non sans Firebug), donc quand vous essayez d'appeler une propriété sur un objet non défini comme,

console.log(..); 

il lance une exception que vous n'êtes pas attraper, donc l'exécution de JavaScript s'arrête.

+0

Wow. Cela pourrait très bien être le cas. Un de mes amis vient de me dire d'utiliser console.log parce que c'était génial, et ça semblait tellement! Je vais essayer cette théorie en ce moment! – shawnjan

+0

Vous êtes l'homme;) – shawnjan

+0

Je ne peux pas accepter la réponse pendant 4 minutes, mais je le ferai. – shawnjan

1

Vous appelez probablement une méthode de l'objet console qui n'existe pas par défaut dans la plupart des navigateurs Web. Il peut être toujours disponible sur les navigateurs webkit (comme Chrome) mais avec firefox/IE (/ opera?) Il nécessite un add-on externe, firebug ou une dépendance javascript.

Extrayez des choses comme firebugx qui définit simplement les méthodes les plus courantes d'un objet console comme des fonctions non-op.

Questions connexes