在单独的框架中执行Javascript

时间:2011-12-07 20:49:45

标签: javascript internet-explorer eval frames

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语句的嵌套有关。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,我不是100%清楚,但请查看本页的最后一部分:

http://www.infimum.dk/HTML/JSwindows.html

我希望它有所帮助。