Question

cette question pour les experts JS là-bas.

J'utilise cette prochaine morceau de code pour obtenir tous les noms de fonctions JavaScript qui existent sous la racine dom.

  for(var x in window){ 
        val = ""+window[x];

       if(startsWith(val,"function")){  //only functions 
          alert(val)
       }
   } 

Bien que ce code fonctionne parfaitement sur Firefox et Chrome, il ne semble pas travailler sur IE8. Il semble que si les fonctions n'existent pas sous l'élément de fenêtre dans IE.

Avez-vous une idée de comment pourrais-je le faire fonctionner sur IE? Merci!

Pas de solution correcte

Autres conseils

Impossible de trouver un équivalent de IE8, mais vous pouvez utiliser ce code pour lire le contenu de JS premières dans la page et l'analyser pour trouver des fonctions là-dedans:

var arrScripts = document.getElementsByTagName("script");
for (var i = 0; i < arrScripts.length; i++)
    alert(arrScripts[i].innerHTML);

Non élégante quelle offre Chrome ou FF, mais il reste du travail .. L'espoir que quelqu'un peut venir avec une meilleure façon cependant. :)

Vous pouvez utiliser typeof() pour savoir directement si elle est une fonction, au lieu d'avoir à le convertir en une chaîne:

for(var x in window){ 
      val = window[x];
     if(typeof(val)=="function"){  //only functions 
        alert(""+val);
     }
 } 

(note, je l'ai converti en une chaîne pour la alert() afin que vous puissiez voir qu'il fait toujours la même chose, selon ce que vous visez à faire, vous pouvez même pas besoin de le faire)

En ce qui concerne les méthodes natives: Dans IE8 vous pouvez accéder à Window.prototype les obtenir:

<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=100" >
<title>Test</title>
</head>
<body>
<ul style="font:normal 12px monospace;">
<script type="text/jscript">
<!--
try{
var win=Window.prototype;
for(var k in win)document.write('<li><strong style="color:blue">'+k+':</strong>'+win[k]+'</li>');
}catch(e){alert('[Window.prototype] not supported');}
//-->
</script>
</ul>
</body>
</html>

Notez que IE8 doit fonctionner en mode IE8, sinon Fenêtre (avec majuscule W) sera inconnue.

Fonctions créés par l'utilisateur devrait être disponible, si sont affectés explicitement à la fenêtre objet.

a=function(){}//will not work
function b(){}//will not work
window.c=function(){}//this will work
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top