2010-11-03 7 views
2

Suite à un commentaire sur une autre question, je me suis demandé s'il y avait un moyen d'obtenir une liste de tous les codes js qui sont chargés sur une page. Quelque chose comme ce que font firebug ou chrome inspecteur.Comment savoir quels javascripts sont chargés en javascript?

Existe-t-il une méthode javascript pure pour cela? Une façon serait de gratter pour les balises de script, mais alors vous pourriez manquer dynamiquement chargé js. J'espère pour une API.

Dans le cas de l'autre question, il est possible de grep tous les scripts pour les appels à console.debug() afin de ne pas les oublier et de les laisser passer en production.

Merci

+0

Il est certainement un moyen pur javascript pour le faire; pensez à Firebug Lite. –

+0

Dans mes débuts dans JavaScript, j'ai fait quelque chose de fou. J'ai écrit du code qui a parcouru tous les noms possibles et recherché des objets/fonctions valides. En dernier recours, cela pourrait partiellement répondre à vos besoins, en trouvant au moins une partie des fonctions et/ou des objets "chargés". Faites-moi savoir si vous voulez et je le déterrerai. –

Répondre

0

utilisant jQuery:

$(document).ready(function() { 


$('script').each(function() { 
    if($(this).attr('src')) { 
     alert($(this).attr('src')) 
    } 
    else { 
     alert("inline") 
    } 
}) 

});

+0

Pas exactement ce que je cherche. C'est ce que j'ai déjà proposé dans ma question. – balu

1

Je ne peux pas penser à quelque chose qui ne nécessite pas beaucoup de travail. Voici ma tentative initiale ratée. Il entre dans une récurrence infinie en essayant de parcourir toutes les propriétés internes de la fenêtre.

/** 
* You have to run this in firefox, pass window the first time 
* @return boolean Whether the given object contains a function where its 
* source code contains the word console. 
*/ 
function lookForConsole(obj) { 
    var found = false; 
    for (var prop in obj) { 
    var current = obj[prop]; 
    if (typeof current == "function") { 

     if (current.toSource.indexOf("console" + ".log") != -1) { 
     found = true; 
     break; 
     } 
    } else if (typeof current == "object"){ 
     found = lookForConsole(current); 
     if (found) { 
     break; 
     } 
    } 
    } 
    return found; 
} 

-vous jamais entendu l'expression, « quand le seul outil dont vous disposez est un marteau, tout problème ressemble à un clou »? Pourquoi voudriez-vous faire cela dans JS?

+1

Belle approche. J'étais simplement intéressé de savoir s'il y a une approche facile à ce sujet. – balu

+0

Je pense que vous perdez votre temps! –

+0

Yup, ressemble à moi. – balu

0

Voici comment firebug le fait. Je suppose qu'il n'y a pas moyen de colombophile alors.

var doc = Firebug.browser.document; 
    var scripts = doc.getElementsByTagName("script"); 
    var selectNode = this.selectNode = createElement("select"); 

    for(var i=0, script; script=scripts[i]; i++) 
    { 
     // Don't show Firebug Lite source code in the list of options 
     if (Firebug.ignoreFirebugElements && script.getAttribute("firebugIgnore")) 
      continue; 

     var fileName = getFileName(script.src) || getFileName(doc.location.href); 
     var option = createElement("option", {value:i}); 

     option.appendChild(Firebug.chrome.document.createTextNode(fileName)); 
     selectNode.appendChild(option); 
    }; 

http://fbug.googlecode.com/svn/lite/branches/firebug1.3/content/firebug/script.js

+0

Malheureusement, votre code ne fonctionne pas avec la même permission que firebug. Vous pouvez créer un plugin pour le faire si ... –