Frage

Diese Frage ist für die JS-Experten da draußen.

Ich benutze dieses nächste Stück Code alle die JavaScript-Funktion Namen zu erhalten, die unter dem dom Wurzel vorhanden ist.

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

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

Während dieser Code perfekt auf Firefox und Chrome funktioniert es nicht auf die Arbeit an IE8 scheinen. Es scheint, als wenn die Funktionen nicht unter dem Fensterelement in IE existieren.

Haben Sie eine Ahnung, wie würde ich es an der Arbeit auf IE zu machen? Vielen Dank!

Keine korrekte Lösung

Andere Tipps

Es kann keinen IE8 äquivalent dieser, aber Sie diesen Code verwenden können, die rohen JS Inhalte auf der Seite zu lesen und analysieren, sie alle Funktionen dort zu finden:

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

Nicht elegant wie das, was Chrome oder FF Angebot, aber es wird immer noch Arbeit .. Hoffnung jemand kann allerdings mit einem besseren Art und Weise kommen. :)

Sie können typeof() direkt verwenden, um herauszufinden, ob es sich um eine Funktion ist, statt es in eine Zeichenfolge konvertieren mit:

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

(beachten Sie, ich es in einen String für die alert() umgewandelt haben, so dass Sie sehen können, es ist immer noch das gleiche tun, je nachdem, was Sie sind mit dem Ziel zu tun, können Sie nicht einmal brauchen, das zu tun)

In Bezug auf die nativen Methoden: In IE8 können Sie auf Window.prototype erhalten sie:

<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>

Beachten Sie, dass IE8 hat in IE8-Modus laufen zu lassen, sonst Fenster (mit Großbuchstaben W) wird unbekannt sein.

Benutzer erstellen Funktionen sollten verfügbar sein wird, wenn dies ausdrücklich auf das Fenster-Objekt zugewiesen.

a=function(){}//will not work
function b(){}//will not work
window.c=function(){}//this will work
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top