Pregunta

Esta pregunta es para los expertos JS por ahí.

Yo uso este siguiente pieza de código para obtener todos los nombres de función de JavaScript que existen bajo la raíz dom.

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

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

Mientras que el código funciona perfectamente en Firefox y Chrome no parece trabajar en IE8. Parece como si no se dan las funciones bajo el elemento de ventana en IE.

¿Tiene alguna idea de cómo iba a hacer que funcione en IE? Gracias!

No hay solución correcta

Otros consejos

No se pudo encontrar ningún equivalente IE8 de esto, pero se puede utilizar este código para leer el contenido JS primas en la página y analizarlo para encontrar las funciones de allí:

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

No es elegante como lo que ofrecen Chrome o FF pero seguirá siendo el trabajo .. espero que alguien puede venir con una mejor manera sin embargo. :)

Se puede utilizar typeof() para averiguar directamente si se trata de una función, en lugar de tener que convertirlo en una cadena:

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

(nota, me he convertido en una cadena para la alert() para que pueda ver que sigue haciendo lo mismo, dependiendo de lo que la intención que tenga, puede que ni siquiera necesita hacer eso)

En cuanto a los métodos nativos: En Internet Explorer 8 se puede acceder a Window.prototype a conseguirlos:

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

Tenga en cuenta que IE8 tiene que correr en IE8 modo, de lo contrario Ventana (con mayúscula W) será desconocido.

funciones creadas por el usuario debe estar disponible, si se asignan de forma explícita a la ventana a objetos.

a=function(){}//will not work
function b(){}//will not work
window.c=function(){}//this will work
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top