J'ai un projet ASP.NET MVC qui utilise une fonctionnalité d'Ajax simple via la méthode de jQuery $ .get comme: La quantité de contenu est relativement faible ici - généralement une seule div avec un court texte de texte. Parfois, cependant, j'injecte également un peu de javascript dans la page. À un moment donné, lorsque je comprends de manière dynamique le script dans du contenu qui a été ajouté de manière dynamique à la page, le script est toujours exécuté, mais il cesse d'être disponible pour le débogueur. Dans VS2008, tous les points d'arrêt sont ignorés et lorsque j'utilise l'instruction "Debugger", je reçois une boîte à une émission "Aucun code source n'est disponible à cet endroit". Cela échoue à la fois pour le débogueur VS2008 et le débogueur Firebug de Firefox. J'ai essayé à la fois d'inclure le script en ligne dans mon contenu dynamique et de référencer également un fichier JS distinct de ce contenu dynamique - les deux manières semblaient entraîner un script indisponible au débogueur. P> Alors, ma question est donc Twofold: p>
5 Réponses :
Je ne peux pas encore commenter, mais je peux peut-être aider à répondre. Comme Qwerty dit, la console Firefox peut être la voie à suivre. Je recommanderais d'aller au bar complet et de faire du feu à Firebug. Il n'a jamais manqué de code dans mes 3 années en utilisant.
Vous pouvez également modifier la façon dont le JavaScript injecté est ajouté et voyez si cela affecte le débogueur que vous utilisez. (Je suppose que vous utilisez l'IDE de Microsoft?). Dans tous les cas, je trouve le meilleur moyen d'injecter JavaScript pour IE, c'est de le mettre comme une annexe dans la tête. Dans l'affaire qui n'est pas viable, la fonction EVAL (je déteste l'utiliser autant que vous le faites) peut être utilisée. Voici mon code de fixateur IE AJAX, c'est-à-dire que j'utilise. Je l'utilise aussi pour Safari car il a un comportement similaire. Si vous en avez besoin aussi, changez simplement la vérification des conditions du navigateur (document.Tous pour IE, Safari est navigator.useragent.tolowercase () == 'Safari';). P>
$.get(myUrl, null, function(result) {
$('#myselector').html(result);
execajaxscripts(result);
});
S'il s'agit de JavaScript intégré au HTML généré par dynmisme, je peux voir où cela pourrait poser problème car le débogueur ne le verrait pas dans la charge initiale. Je suis surpris que vous puissiez le mettre dans un fichier .js séparé et le débogueur n'a toujours pas compris la fonction. P>
Il semble que vous puissiez définir une fonction dans un fichier statique séparé, nominalement "get_and_show" (ou quoi que ce soit, éventuellement imbriqué dans un espace de noms de tri) avec un paramètre de MyURL, puis appelez la fonction de HTML. Pourquoi ce déclenche-t-on le point d'arrêt (avez-vous essayé quelque chose comme ceci - la question n'est pas claire quant à savoir si la référence au fichier HTML dynamique était juste un appel Func, ou la référence de script / charge réelle aussi) ? Assurez-vous d'abord de charger le fichier de script externe à partir d'une référence «codée dur» dans le fichier HTML? (Voir la source sur robochrogs.com/index.html - Charges .js Fichiers, puis exécute une insertion de texte Func) P>
Cela pourrait être un coup long, mais je n'ai pas accès à IE maintenant à tester. Essayez de nommer la fonction anonyme, E.g.:
$.get(myUrl, null, function anon_temp1(result) {
$('#myselector').html(result);
});
Firebug surpris ne pas attraper la déclaration "Debugger". Je n'ai jamais eu de problèmes, peu importe la complication de la méthode JS, y compris la méthode, P> P>
Nous utilisons Firebug pour le débogage JavaScript, les demandes de profil, lancer des journaux, etc. Vous pouvez télécharger à partir de http://getfirebug.com/ p>
Si Firebug ne montre pas votre source JavaScript, écrivez une URL pour tester votre exemple. p>
J'espère que j'ai été de n'importe quelle aide! P>
Si vous ajoutez jQuery pourrait être corrigé pour le faire automatiquement, mais Le billet a été rejeté. p>
Voici une question connexe: est possible de déboguer dynamique chargement JavaScript par un débogueur comme WebKit, Firebug ou IE8 Developer Tool? P> // @ SourceRl = foo.js code> à la fin du script que vous injectez, il devrait apparaître dans la liste des scripts dans Firebug et Webkit Inspector. p>
Avez-vous essayé le plugin de la console de Firefox? Cela peut vous aider à attraper des bugs. addons.mozilla.org/en-us/firefox/addon/1815
Faites-nous savoir si quelque chose est utile ou même mieux attribuer une réponse, essayant d'effacer mes réponses qui n'étaient pas si utiles :)
Utilisez-vous simplement Firefox ou Firefox + Firebug? Je sais que Firebug aujourd'hui a la possibilité de déboguer le code à l'intérieur de Eval (), alors peut-être que cela peut aussi aider dans votre situation aussi