0

我有一个问题让我对带有标签面板的 extjs4 和 IE8 感到疯狂。

当我关闭另一个选项卡以处理修改时,我必须刷新特定选项卡。我使用'beforeclose'事件来触发刷新。FF上没问题。但是对于 IE8(我的应用程序的目标),我有一个“无法从释放的脚本执行代码”。

有人可以帮助我吗?

这是代码:

var activeTab = getTabPanel().getActiveTab(); // getTabPanel() give me the tab panel
activeTab.on('beforeclose', function(tab, opts) {
    alert("refresh !!!!");
    tab.refreshTab('order_'+id); // refreshTab(id) search the tab with the id identifier and refresh the contents
}

没有显示警报,所以我认为无法处理侦听器。

编辑:我使用 iframe 作为选项卡面板的内容。

4

1 回答 1

0

我终于找到了错误在哪里。

这段代码在 beforeclose 事件上附加了一个监听器,监听器被父窗口调用。如果我刷新 iframe(通过提交表单或使用“刷新”操作),事件仍附加到父窗口但回调函数已从内存中消失。使用 Firefox,回调成功调用了两次,但 IE 抛出“无法从已释放的脚本执行代码”错误。

为了解决这个问题,我在 beforeunload 事件上附加了一个调用来分离监听器。

于 2013-11-12T10:25:55.080 回答