2009-06-19 5 views
0

Je travaille sur une page Web ASP.NET qui est assez complexe avec ajax, callbacks, javascript etc. Je rencontre cette erreur par intermittence:Recherche d'erreur JS - "Arrêtez d'exécuter ce script?"

Arrêtez de lancer ce script? Un script sur cette page fait courir IE lentement ...

Toute aide pour trouver le coupable est vraiment appréciée.

+0

Tout code serait apprécié –

Répondre

3

Cela peut se produire si vous avez une boucle infinie ou un appel ajax synchrone qui ne revient pas. Je vous recommande d'utiliser Firefox avec Firebug, Fiddler ou l'outil de développement IE pour déboguer le problème.

+0

+1 pour Firebug ... Je ne sais pas comment je suis arrivé sans elle! –

2

Certains des éléments suivants est utile lorsque vous essayez de déboguer javascript:

  • Installer Firebug - il a la capacité de profiler votre application, ce qui peut vous conduire à l'endroit où le ralentissement peut être INTERVENUES dans votre script
  • En cas de doute, utilisez des instructions d'alerte. Peppez-les dans votre code et utilisez-les pour savoir où votre javascript est lent.
  • Jetez un oeil à cette question SO pour obtenir plus javascript debugging tips, ou cette question sur how to debug javascript in IE
  • Enveloppez votre AJAX appelle à try/blocs catch - l'article Debugging AJAX in Production, décrit la technique
1

J'ai trouvé une cause principale pour cela à popup dans IE par rapport à un autre navigateur est la manipulation de chaînes. Si vous enchaînez beaucoup les chaînes, la performance d'IE prend un énorme coup lorsque la chaîne se développe.

Mais autant de suggestions suggèrent que l'utilisation d'un outil de développement vous mènera, nous l'espérons, au problème et nous pouvons vous aider si nécessaire.

3

Je vous suggère de lire l'article suivant:

http://www.julienlecomte.net/blog/2007/10/28/

En un mot, le message d'erreur que vous décrivez se produit lorsque le code exécuté à partir d'un seul point d'entrée javascript fonctionne depuis longtemps. Si vous pouvez diviser votre long traitement en morceaux et les appeler séquentiellement en utilisant setTimeout(), vous n'obtiendrez plus le message d'erreur.

de l'article, un bon modèle pour les routines javascript de longue durée:

function doSomething (callbackFn [, additional arguments]) { 
    // Initialize a few things here... 
    (function() { 
     // Do a little bit of work here... 
     if (termination condition) { 
      // We are done 
      callbackFn(); 
     } else { 
      // Process next chunk 
      setTimeout(arguments.callee, 0); 
     } 
    })(); 
} 
Questions connexes