window.attachEvent在IE中不起作用

时间:2010-08-11 08:25:48

标签: javascript internet-explorer javascript-events

我想在新窗口中显示图片。为此,我编写了打开新窗口的javascript函数。我打开一些固定大小的窗口(例如500 x 500)。但我想调整窗口大小以适应图片大小。为此我将事件附加到这个新创建的窗口。这里只是IE的代码,因为在FF和Chrome中都可以使用。

var win = null;
function showPicture(url) {
    win = window.open(url, "pic", "height=500,width=500");
    if (window.attachEvent) {
        win.attachEvent("onload", correctWinSize);  
    }
    // Not IE attach event code
}

function correctWinSize() {
     // Here is resize code
}

问题是事件有时会触发。我只需点击调用showPicture()的超链接,窗口有时会调整大小,有时不会。你有什么想法让它有效吗?

1 个答案:

答案 0 :(得分:1)

您无法可靠地跨浏览器捕获另一个窗口的load事件。您需要在弹出窗口中处理load事件并在主窗口上调用一个函数来告诉它已加载:

在主窗口中

function popUpLoaded() {
    alert("Loaded!);
    // Do your resizing thing
}

在弹出式窗口中

window.onload = function() {
    // Check the opener still exists to prevent an error in the
    // event it's been closed
    if (!window.opener.closed) {
        window.opener.popUpLoaded();
    }
};