使用IE9 / 10时,无法从iframe内部访问骨干事件

时间:2013-06-08 00:08:22

标签: internet-explorer iframe backbone.js

我有一个html页面,我在其中定义了一个全局App.vent主干事件对象。

var App = {};
App.vent = _.extend({}, Backbone.Events);

在该页面中,我有一个iframe,它引用了App对象。

App = parent.App;

调用App.vent来触发事件的iframe页面内的代码运行正常。但是如果iframe的src发生了变化,那么App.vent上的任何方法调用都会失败,IE会给出一个

SCRIPT5011:无法执行已释放脚本中的代码错误。

任何解决方法?

1 个答案:

答案 0 :(得分:3)

在以下回答的问题中,已经有一个非常好的例子说明为什么会出现这种情况:

What causes the error “Can't execute code from a freed script”

请特别查看Sjoerd Visscher的this answer,因为它概述了您的问题并显示了解决方法。

最后,确保您跟踪事件绑定并删除对不再存在的iframe内容中包含的函数的任何绑定,这将是更好的形式。这是一个内存泄漏,良好的做法是控制这些事情。