2010-05-09 4 views
2

J'ai eu une mise à jour de page bizarre dans le déploiement et je n'arrive pas à trouver la cause ou à la répliquer en développement. Existe-t-il un moyen pour une erreur javascript ou une exception de provoquer un rechargement de page? Ou quelques conseils pour m'aider à affiner la cause?Une erreur javascript provoque le rechargement de la page?

Cela se produit lors d'un déploiement sur le terrain et je ne peux pas le répliquer lors d'un test en local. Je sais que cela se passe pendant que je consignation des exceptions en utilisant ELMAH. L'utilisateur utilise Firefox.

UrlReferrer: example.com/products/edit/100

Url de GET: example.com/products/edit/undefined~~V~~3rd

Et je ne vois pas de code javascript sous la forme de la fenêtre .location = '/ products/edit /' + id, (où id pourrait être indéfini) qui pourrait être appelé depuis cette page.

Mais il y a des appels comme ci-dessus ailleurs. J'espère que cela a du sens. :)

+2

Quel navigateur testez-vous avec? est-il produit dans tous les navigateurs? avez-vous un code rafraîchissant/rechargeant dans votre JS partout? avez-vous essayé d'utiliser Firebug/IE dev outils/outils de développement Chrome pour franchir le code –

+5

@Andy - Éloignez-vous du café! Si vous venez d'entrer et de lire ça, ça sonne comme un collègue o n un engouement à la caféine –

+0

@Nick - Alors, soyons simples; OP, pouvez-vous nous donner un exemple, comme du code ou un lien? –

Répondre

4

Non, il n'y a pas d'erreur Javascript qui à elle seule provoquerait le rechargement d'une page. Il n'y a aucune raison pour que le navigateur recharge la page si une erreur survient, la seule chose que l'on pourrait espérer atteindre est de provoquer la même erreur. Donc, la seule raison pour laquelle une erreur Javscript pourrait provoquer un rechargement est si le script empêche un rechargement quand il fonctionne correctement, ou s'il provoque normalement un rechargement dans une situation spécifique et ne parvient pas à le limiter à cette situation.

Exemple: Si vous avez du code qui empêche un clic de causer un postback:

<a href="page.html" onclick="return false;"> 

S'il y avait une erreur dans le script, il ne serait plus empêcher le rechargement.

+0

C'est quelque chose que je n'ai pas pris en compte.Ok, va revoir le code. – sean

+0

+1 pour l'exactitude - bien que si vous foirez 'return false;', il est temps de l'appeler un jour, obtenir du café, revenir plus tard :) –

+2

@Nick Craver: mais pas trop de café, non? –

1

La question a déjà été répondue, mais je voulais ajouter une suggestion sur le débogage de ce comportement. J'utilise Firefox/Firebug pour beaucoup de développement JS, et parfois je vois une exception soulevée dans Firebug juste avant la soumission de la page et je ne peux rien y faire. Si j'ai des centaines de lignes de JS en réponse à un événement, je ne veux pas passer à travers tout cela à la recherche de la ligne 1 qui contient une erreur et provoque un rechargement. Une fois que je peux répliquer l'erreur, j'utilise Fiddler pour définir un point d'arrêt sur une URL (par exemple, bpu localhost qui arrêtera toutes les requêtes destinées à localhost.) Même si le navigateur a soumis, il donne toujours accès à Firebug pour que je puisse tandis que Fiddler détient la demande.

Hope this helps quelqu'un

+0

Qu'est-ce qu'un violoneux? – redolent

+1

@redolent C'est un outil extrêmement utile (et gratuit) .net pour surveiller, intercepter et modifier les requêtes HTTP et les réponses sur votre machine. C'est la pièce manquante du développement web et sa place est entre le débogueur de votre navigateur (Firebug, outils Chrome) et le débogueur côté serveur (VS, Eclipse, x-debug). Il peut vous en apprendre beaucoup sur HTTP et vous aider à tester votre application sans modifier le code ou écrire un harnais de test. http://www.fiddler2.com/fiddler2/ – tomfumb

Questions connexes