2010-11-29 9 views
0

J'ai un site jquery/ajax à tarh33ls.com Pour une raison quelconque, dans Firefox, je reçois l'erreur suivante:Comment cela crée-t-il une erreur?

uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMLocation.href]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://tarh33ls.com/ :: :: line 26" data: no]

Line 0

mais la ligne 26 est:

if (location.href.indexOf("#")==-1) {location.href="http://tarh33ls.com/#";} 

Comment que générer une erreur ?

+0

très bizarre ... faire une vérification avant cette ligne quelque chose comme: console.log (location.href); peut-être que location.href est encore indéfini ... Cela semble fonctionner correctement sur GC – farinspace

Répondre

1

Je ne sais pas pourquoi l'erreur se produit, mais il semble que ce le fixe:

Déplacer le code if (location.href.indexOf("#") == -1 intérieur du bloc $(document).ready (en haut de celui-ci), comme ceci:

$(document).ready(function() { 
    if (location.href.indexOf("#") == -1) { 
     location.href="http://tarh33ls.com/#"; 
    } 
    $.ajaxSetup({ 
...etc 
+1

Il est généralement préférable d'utiliser jQuery pour inclure le code init dans '$ (document) .ready', afin d'empêcher l'exécution du code sur une page incomplète. – cambraca

+0

que voulez-vous dire? aussi, je voterais votre réponse, mais je n'ai pas assez de rep: P – tarH33ls

+0

@ tarH33ls Si vous avez js en cours d'exécution en dehors de cela, il fonctionne comme le navigateur le voit. Ainsi, par exemple, vous pouvez avoir js qui modifie certains éléments html qui, dans le code source, sont en dessous de la js. Le code va essayer de fonctionner mais ne trouvera pas le code HTML. En utilisant ready, la page se chargera complètement avant d'exécuter votre js. (J'espère que je suis clair .. peut-être la [page jQuery sur 'prêt'] (http://api.jquery.com/ready/) explique mieux que moi) – cambraca