Ok, donc il s'avère que le défaut de mise en œuvre de l' $.getScript()
fonction fonctionne différemment selon que l'référencé fichier de script est sur le même domaine ou pas. Les références externes tels que:
$.getScript("http://www.someothersite.com/script.js")
sera la cause de jQuery pour créer un script externe de référence, qui peut être débogué avec pas de problèmes.
<script type="text/javascript" src="http://www.someothersite.com/script.js"></script>
Cependant, si vous faites référence à un script local de fichier telles que les suivantes:
$.getScript("http://www.mysite.com/script.js")
$.getScript("script.js")
$.getScript("/Scripts/script.js");
jQuery va télécharger le script contenu de manière asynchrone, puis l'ajouter à du contenu en ligne:
<script type="text/javascript">{your script here}</script>
Cette dernière approche ne permet pas de travailler avec tout le débogueur que j'ai testé (Visual Studio.net, Firebug, IE8 Débogueur).
La solution de contournement consiste à substituer l' $.getScript()
fonction de sorte qu'il crée toujours une référence externe plutôt que du contenu en ligne. Voici le script pour le faire. J'ai testé ce dans Firefox, Opera, Safari et IE 8.
<script type="text/javascript">
// Replace the normal jQuery getScript function with one that supports
// debugging and which references the script files as external resources
// rather than inline.
jQuery.extend({
getScript: function(url, callback) {
var head = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
script.src = url;
// Handle Script loading
{
var done = false;
// Attach handlers for all browsers
script.onload = script.onreadystatechange = function(){
if ( !done && (!this.readyState ||
this.readyState == "loaded" || this.readyState == "complete") ) {
done = true;
if (callback)
callback();
// Handle memory leak in IE
script.onload = script.onreadystatechange = null;
}
};
}
head.appendChild(script);
// We handle everything using the script element injection
return undefined;
},
});
</script>