Internet Explorer 6/7/8。
我正在使用eval()调用来确保代码在多帧网站中的特定帧的上下文中执行。
我的情况是我基本上将FrameA中方法的完全限定名称传递给FrameB。然后我希望FrameB在FrameA中执行所述方法 - 但是在FrameA的上下文中。这是至关重要的,因为IE内部的限制可能导致“释放脚本”错误。请参阅:Can't execute code from a freed script
FrameB使用eval首先获取目标帧对象,然后在结果对象上调用eval以执行该帧内的方法。因此,请考虑从FrameB内部执行以下操作:
eval("top.FrameA").eval("SomeMethod(1,2);");
第一个eval返回一个窗口对象,但是对第二个eval的调用总是会导致“对象预期”错误。
有趣的是,上面的代码来自内部 FrameA,但它实际上是通过以下代码在FrameB内执行的:
top.FrameB.eval("eval('top.FrameA').eval('SomeMethod(1,2);');");
所以这个问题与eval语句的嵌套有关。
我在这里缺少什么?
答案 0 :(得分:0)