質問

この質問が出JSの専門家のためである。

私は、DOMルートの下に存在するすべてのJavaScript関数名を取得するコードのこの次のピースを使用します。

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

       if(startsWith(val,"function")){  //only functions 
          alert(val)
       }
   } 
このコードは、FirefoxとChrome上で完璧に動作しますが、

これはIE8で動作するようには思えません。 機能はIEでのウィンドウ要素の下に存在していないかのように思えます。

私はIE上で動作するようにそれを作るだろうか任意のアイデアを持っていますか? ありがとうございます!

正しい解決策はありません

他のヒント

この任意のIE8同等物を見つけることができませんでしたが、あなたはページ内の生JSの内容を読み取るために、このコードを使用し、そこに任意の機能を見つけるために、それを解析することができます:

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

どのようなクロムやFFオファーとエレガントが、それはまだ仕事..希望の誰かががより良い方法で来ることができるわけではありません。 :)

あなたの代わりに文字列に変換するので、それは関数の直接かどうかを調べるためにtypeof()を使用することができます:

for(var x in window){ 
      val = window[x];
     if(typeof(val)=="function"){  //only functions 
        alert(""+val);
     }
 } 
(あなたはそれはまだ同じことをやっている見ることができるようにノートには、私はalert()のためにそれを文字列に変換しました。あなたがすることを目指しているものによって、あなたもそれを行う必要はありません)。

ネイティブ方法について: IE8では、 Window.prototypeするにアクセスすることができますそれらを取得します:

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

IE8は、そうでなければ、IE8モードで実行されている必要があり、のウィンドウの(と大文字W)であろう未知の

明示的にウィンドウ・オブジェクトに割り当てられている場合、ユーザーが作成した機能は、利用可能であるべきである。

a=function(){}//will not work
function b(){}//will not work
window.c=function(){}//this will work
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top