2010-08-11 85 views
2

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

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

您无法可靠地跨浏览器捕获另一个窗口的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(); 
    } 
};