2017-10-16 73 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文件。虽然它是艰难而复杂的编码,但帮助。谢谢。 –