2016-03-25 4 views
0

スクリプトを続行する前に、ウィンドウ内に必要なプロパティの必要な名前の配列をループしようとしています。しかし、JavaScriptは、 'in'キーワードを使用するときに明示的なテキストの代わりに変数を使用すると、それを気に入らないようです。変数を使用して 'in'を使用してウィンドウ内のプロパティを検索する

TypeError: Cannot use 'in' operator to search for 'ServiceWorker' in window

私は何か間違っているのですか?これはちょうどこの作品ですか?

const waitForScripts =() => { 
 
    return new Promise(function(resolve, reject) { 
 
    var required = ["ServiceWorker"]; 
 
    var loaded = 0; 
 

 
    while (loaded <= required.length + 1) { 
 
     if (loaded == required.length) { 
 
     resolve(); 
 
     } 
 
     for (var i = 0; i < required.length; i++) { 
 
     var search = required[i]; 
 
     if (search in 'window') { 
 
      loaded++; 
 
     } 
 
     } 
 
    } 
 
    }); 
 
};

+0

エラーが「ウィンドウ」と表示されるのは奇妙なことです。 Firefoxは 'Operand'ウィンドウに 'TypeError:invalid 'をスローします。 – Oriol

+0

それは奇妙ですね。 Firefoxのエラーがより適切に表示されます。 – Polarize

答えて

4

あなたは、文字列のin演算子を使用し、あなたがお奨めは、そのwhileループに注意して、変数ウィンドウに

if (search in window) { 
    loaded++; 
} 
+0

キリスト、私は何が間違っている。ありがとう! – Polarize

1

を、それを使用したいと思います。何らかの理由でプロパティ名の1つがウィンドウオブジェクトにない場合は、ロードされないため無限ループになります。

+0

あなたは絶対に正しいです。私はちょうど自分のために見つけた。両者が等しいときにそれをクリアする間隔に切り替えました。 – Polarize

関連する問題