IE9和self.close()

时间:2011-05-23 17:01:53

标签: javascript jquery

我在InnovaStudio WYSIWYG编辑器(5.3)中有一个iframed“弹出窗口”窗口。它用于放置从导航到文本的链接。单击链接后,弹出窗口应该关闭。

此代码适用于除Internet Explorer 9以外的所有浏览器:

$('#InternalLinkSelector').find('a').click(function(e) {
    e.preventDefault();
    $this = $(this);
    (opener ? opener:openerWin).oUtil.obj.insertLink($this.attr('href'), $this.html(), null, null);
    self.close();
});

弹出窗口在上角有自己的关闭按钮,调用ISWindow.objs[' UNIQUE_ID_STRING '].close();。我尝试重写代码以使用ISWindow,但它表现出相同的行为,适用于除IE9之外的所有浏览器:

$('#InternalLinkSelector').find('a').click(function(e) {
    e.preventDefault();
    $this = $(this);
    (opener?opener:openerWin).oUtil.obj.insertLink($this.attr('href'), $this.html(), null, null);
    // Find the window object to close it
    for (var i in top.ISWindow.objs) {
        if ('function' == typeof top.ISWindow.objs[i].close) {
            top.ISWindow.objs[i].close();
        }
    }
});

2 个答案:

答案 0 :(得分:2)

尝试使用window.close()代替self.close()

答案 1 :(得分:2)

我使用console.log(self.close)并在InnovaStudio的istoolbar.js代码中跟踪这些行:

me.rt.frm.contentWindow.closeWin=function() {
    me.close();
};
me.rt.frm.contentWindow.close=function() {
    me.close();
};

因此,考虑到IE9可能由于某种原因未能看到close(),我将代码更改为使用closeWin()

$('#InternalLinkSelector').find('a').click(function(e) {
    e.preventDefault();
    $this = $(this);
    (opener ? opener : openerWin).oUtil.obj.insertLink($this.attr('href'), $this.html(), null, null);
    self.closeWin();
});

现在有效!