我正在开发一个在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()
函数会导致这种情况发生,我可以选择修复它吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
您可能希望将脚本3更改为var x; x = x || {}; x.a = function(){ ... }
这可能是由于在此变量 x 中声明变量之前先抢先使用变量引起的。
变量x在脚本2 中不可用的事实是因为eval()
方法突然失败,“ x未定义”
实际上我只从代码脚本3 的代码中理解了一点点
如果我能够瞥见它,那么我可能比现在更好地帮助你。
希望这有帮助