2017-10-16 10 views
0

ファンクションジェネレータ(function*())を使用するJavaScriptコードがあります。ご存知のようにIEは、これらの機能をサポートしていないと私は特にIEのための別の方法を使用して、このような、このコードを使用します。IEはファンクションジェネレータをサポートしていません

if (false || !!document.documentMode){ //IE browser 
    //do for IE 
} 
else { 
    function*(){ 
     //do for other browsers 
    } 
} 

が、IEで、ブラウザが構文エラーとページが動作しませんです!私もtry-catchを使用しましたが、動作しませんでした。

この問題はどのように処理する必要がありますか?

ありがとうございました。

+0

MDNと支持テーブル内を見て、はい、それはIE https://developer.mozilla.org/でサポートされていないが含まれていないことを基本的に

、あなたはIEをサポートする場合、 * –

+0

ブロックのタイプを問わず、構文エラーとして 'function *()'が表示されます。それをファイルに分けて、そのファイルをIE用にロードするか、 'eval() 'を使うだけです。 –

+0

' eval'を使わないでください。 – Cerbrus

答えて

1

elseのコードは、そのブラウザで実行されない場合でも、引き続き解釈されます。
これは、構文エラーを含むことができないことを意味します。

IEの場合、function*です。構文エラーです。
try-catch構文エラーがある場合、コードは実行されないため、blockは構文エラーを検出しません。 ファイルfunction*

+0

ok。これはIEでこれを処理する方法がないということですか?このコードの部分を別のファイルに分けることはできません。なぜなら、機能が欠落するからです。 –

+1

ユーザーのブラウザに応じて、他のファイルを読み込むことができます。または、ジェネレータ関数を使用しない別のメソッドを作成し、すべてのブラウザで代わりに使用します。 (つまり、IEのフォールバックを書かなければならないので、どこでも使用してみてください) – Cerbrus

+0

私は自分のプロジェクトで関数の全体を別々にし、別の.jsファイルに書き込むことに決めました。それは困難で複雑なコーディングですが、助けました。ありがとうございました。 –

関連する問題