Pergunta

Esta questão é para os especialistas em JS por aí.

Eu uso esta próxima peça de código para obter todos os nomes de funções JavaScript que existem na raiz DOM.

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

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

Embora esse código funcione perfeitamente no Firefox e Chrome, ele não parece funcionar no IE8. Parece que as funções não existem sob o elemento da janela no IE.

Você tem alguma ideia de como eu conseguiria funcionar no IE? Obrigada!

Nenhuma solução correta

Outras dicas

Não foi possível encontrar nenhum equivalente ao IE8 disso, mas você pode usar este código para ler o conteúdo do JS bruto na página e analisá -lo para encontrar quaisquer funções lá:

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

Não é elegante como o que o Chrome ou o FF oferece, mas ainda funcionará. Espero que alguém possa vir com melhor caminho. :)

Você pode usar typeof() Para descobrir diretamente se é uma função, em vez de ter que convertê -la em uma string:

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

(Observe, eu o converti em uma string para o alert() Então você pode ver que ainda está fazendo a mesma coisa; Dependendo do que você pretende fazer, pode nem precisar fazer isso)

Em relação aos métodos nativos: no IE8, você pode acessar Window.prototype para obtê-los:

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

Observe que o IE8 tem que correr em modo IE8, caso contrário Janela (com maiúsculas w) será desconhecido.

As funções criadas pelo usuário devem estar disponíveis, se forem atribuídas explicitamente ao objeto de janela.

a=function(){}//will not work
function b(){}//will not work
window.c=function(){}//this will work
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top