javascript - window.attachEvent 在 IE 中调整窗口大小

标签 javascript internet-explorer dom-events

我想在新窗口中显示图片。为此,我编写了打开新窗口的 JavaScript 函数。我打开了一个固定大小的窗口(例如 500 x 500),但我想将窗口大小调整为图片大小。为此,我将事件附加到这个新创建的窗口。这里只是 IE 的代码,因为在 Firefox 和 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() 的超链接,窗口有时会调整大小,有时不会。您对如何让它发挥作用有任何想法吗?

最佳答案

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

关于javascript - window.attachEvent 在 IE 中调整窗口大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3456596/

相关文章:

javascript - Kendo UI - 模板化复选框列表并将检查绑定(bind)到 viewModel

javascript - 在客户端 React 中存储 MSAL Graph API token 并重复使用它直至过期

css - IE11 使用 svg 作为背景图像失败

javascript - 在 Firefox 中禁用元素后不会触发 DOM 事件

javascript - 如何找到以编程方式触发的 Javascript 事件的起源?

javascript - Ember Data 没有在 save() 上序列化记录 ID,导致没有 ID 的 PUT?

javascript - `let` 的解释和带有 for 循环的 block 作用域

asp.net - 使用 IE 通过 https(SSL) 导出到 excel 在 asp.net 网站中不起作用

c++ - 如何识别 Explorer Bar(Internet Explorer) 是否被隐藏?

javascript - (为什么)访问 outerHeight 会取消 click/mouseup/focus 事件?