Domanda

questa domanda è per gli esperti JS là fuori.

Io uso questo prossimo pezzo di codice per ottenere tutti i nomi delle funzioni JavaScript che esistono sotto la radice dom.

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

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

Anche se questo codice funziona perfettamente su Firefox e Chrome non sembra di lavorare su IE8. Sembra come se non esistono le funzioni sotto l'elemento della finestra in IE.

Avete qualche idea di come ce l'avrei fatta al lavoro su IE? Grazie!

Nessuna soluzione corretta

Altri suggerimenti

Impossibile trovare un equivalente IE8 di questo, ma è possibile utilizzare questo codice per leggere le prime JS contenuti nella pagina e analizzare per trovare tutte le funzioni in là:

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

Non è elegante come quello Chrome o FF offerta ma sarà ancora lavoro .. la speranza che qualcuno può venire con una migliore modo però. :)

È possibile utilizzare typeof() per scoprire direttamente se si tratta di una funzione, invece di dover convertire in una stringa:

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

(nota, ho convertito in una stringa per la alert() modo da poter vedere che è ancora facendo la stessa cosa, a seconda che cosa si sta puntando a fare, non si può nemmeno bisogno di farlo)

Per quanto riguarda i metodi nativi: In IE8 è possibile accedere a Window.prototype per farli:

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

Si noti che IE8 ha per l'esecuzione in IE8-mode, altrimenti Finestra (con maiuscola W) sarà sconosciuto.

funzioni create dall'utente dovrebbe essere disponibile, se sono esplicitamente assegnato alla finestra-oggetto.

a=function(){}//will not work
function b(){}//will not work
window.c=function(){}//this will work
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top