2017-10-16 104 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/ es/docs/Web/JavaScript/Referencia/Sentencias/function * –

+0

無論您將其放入哪種類型的塊,它仍會將'function *()'看作語法錯誤。你將不得不將它分開到一個文件,並只加載該文件的IE,或使用'eval()' –

+0

不要使用'eval'。 – Cerbrus

回答

1

else語句中的代碼仍然被解釋,即使它不會在該瀏覽器上運行。
這意味着它不能包含語法錯誤。

對於IE,function*的語法錯誤。
A try-catch塊不捕獲語法錯誤,因爲如果存在語法錯誤,則代碼不會執行。

基本上,如果你想支持IE,即文件不能包含function*

+0

好的。這意味着我沒有辦法在IE中處理這個問題?我無法將這部分代碼分離到其他文件,因爲功能會丟失。 –

+1

您可以加載其他文件,具體取決於用戶的瀏覽器。或者你編寫一個不使用生成器函數的不同方法,而只是將其用於所有瀏覽器。 (我的意思是,你必須編寫IE備份,所以爲什麼不到處使用呢?) – Cerbrus

+0

我決定在我的項目中分離整個函數,並將它寫入另一個.js文件。雖然它是艱難而複雜的編碼,但幫助。謝謝。 –