0

我正在开发一个在 Internet Explorer 中中断的遗留应用程序。它有以下代码:

脚本 1: /* Call script 2 */; x.a(b)

脚本 2: eval(script3)

脚本 3: var x = x || {}; x.a = function(){ ... }

在 Firefox 中,这按预期工作。

然而,在 Internet Explorer 中,它会因为说“x 未定义”而失败(这被大大简化了)。我将它追溯到代码中的这一点,并注意到它x在脚本 3 中定义,但随后在堆栈中返回到脚本 2,它失去了它的可用性/范围(我通过将 console.log 语句放在两者中进行测试 - IE 是脚本 3 中的那个没问题,但脚本 2 中的那个崩溃了)。

Internet Explorer 和/或该eval()功能会导致这种情况发生,我有哪些解决方法?

4

2 回答 2

0

为什么不设置一个测试并亲自看看呢?

这是一个:http: //jsfiddle.net/Y3bf5/

它似乎在 IE7+ 中运行良好。

于 2012-10-03T13:14:15.590 回答
0

您可能希望将 Script 3 更改为var x; x = x || {}; x.a = function(){ ... }
This mayve 由于在这种情况下声明变量x之前变量的抢占式使用而导致。 变量 x 在脚本 2
中不可用的事实是因为该方法突然失败并出现“ x 未定义” 实际上我只从引用脚本 3 的代码中理解了一点点 如果我能瞥见它,那么我可能比现在对你有更好的帮助。 希望这可以帮助eval()


于 2012-10-03T13:38:28.547 回答