2010-06-22 4 views
0

J'utilise l'Optimiseur de Site Google et son cookie côté client en cours d'exécution vérifie le contenu une seule fois.Est-ce que des problèmes JavaScript surviennent dans le navigateur?

Cependant, quand ils sont cuits, je reçois une erreur javascript qui ne semble pas fatale, mais j'ai lu que 1 erreur js est assez pour casser totalement Internet Explorer.

la ligne de code en question est <script>utmx_section("Blah")</script>

Cette ligne est fourni directement par Google, mais je reçois une erreur non définie. Maintenant, il fonctionne tout en bas de la page, donc le pire des cas est que GA ne fonctionne pas.

Mais quels sont les dangers?


EDIT: Je ne demandais pas directement de déboguer mes JS, parce que le problème est ésotérique et il est possible son en raison d'une erreur ou d'une hypothèse erronée. La question était de savoir s'il était dangereux d'ignorer le problème. L'erreur que j'obtiens est: "utmx_section n'est pas défini", même si le JavaScript qui fournit la fonction en question est correctement inclus, et la seule différence entre les pages sur lesquelles il lance une erreur et celles qu'il ne fait pas C'est que JQuery supplémentaire est exécuté (en raison d'un conditionnel qui vérifie un cookie) sur les pages qu'il ne lance pas une erreur.

AUTRE EDIT: A contourner le problème en ayant un PHP conditionnel exécuter la ligne utmx seulement quand il serait nécessaire (c'est-à-dire, sur les utilisateurs non-cookied).

Répondre

2

La plupart des utilisateurs ont désactivé les notifications JavaScript pour ne pas voir l'erreur.L'erreur ne va pas "casser le navigateur" dans votre cas; où il ne se casse est des appels ultérieurs à cette fonction et tout code après cet appel dans ce bloc de script:

utmx_section("Blah"); 
// later: 
utmx_section("Correct"); <-- will not fire 

et:

utmx_section("Blah"); 
var a = b; <-- will not fire 
doStuff(); <-- will not fire 

Fixation cela en PHP a été le faire à la dure. Ajoutez simplement un conditionnel. Et vous devez utiliser "fenêtre" lorsque vous cherchez à voir si une variable globale existe:

if(window.utmx_section){ 
    utmx_section("Blah"); 
} 
0

Je ne sais pas exactement ce que vous entendez par "quand ils sont cuits"
Cependant, oui, un morceau de javascript provoquera généralement l'arrêt du traitement du script javascript.

Quoi qu'il en soit, vous devriez déboguer le problème. Le code Google Analytics fonctionne sur un très grand nombre de sites, donc je suppose que vous avez un problème ailleurs. Soit dans la façon dont vous avez copié le code, les dépendances, ou dans certains de vos fichiers filtrant.

+0

Aurait dû être plus clair: Le code brisé est Google Website Optimizer; Le code qui s'exécute après le problème est le code Google Analytics. – Yahel

2

Pour répondre strictement à la question dans le titre "Est-ce que les problèmes de JavaScript peuvent casser le navigateur?", Certains le font.

Considérez ce qui suit:

<script type="text/javascript"> 
    function doSomething() { 
    //some stuff here 
    }  
    for (;;) { 
    doSomething(); 
    } 

</script> 

Pas tous les navigateurs sont assez intelligents pour détecter ce genre de problème. Cela va accrocher votre navigateur de sorte que vous devez aller tuer sur son processus.

Les nouveaux navigateurs le détectent et affichent une notification vous permettant de tuer le script dans le navigateur, mais comme je l'ai dit, tous ne sont pas assez intelligents.

En ce qui concerne le corps de votre question, ne savez pas quel est le problème avec <script>utmx_section("Blah")</script>. Pourriez-vous fournir plus de détails?

+0

Fourni quelques détails supplémentaires dans mon édition. Merci pour la réponse (patient)! :) – Yahel