为什么 window.onload 在 IE 中不触发

why window.onload not fire in IE

我有一些代码可以打开一个弹出窗口,然后通过弹出页面上的某个元素调整它的大小。以下代码在 Chrome 和 Firefox 中运行良好,但在 IE 中运行不正常。

var newWin ;
    function openWindow(id) {
        newWin = window.open(url,config,setting);
        newWin.onload= function () {                     
              newWin.resizeTo(newWin.document.getElementById("certainID").offsetWidth,100);
        };

在 IE10 中会出现弹出窗口,但 window.load 事件永远不会触发。 我也尝试 newWin.$(document).ready ,但似乎无效。

有什么建议吗?

这是IE中的一个老问题。 最好的解决方案之一是添加 new.

通常我们写

window.onload=function() { alert('hello');};

替换为

window.onload=new function() { alert('hello');};

最后我通过 setTimeout 解决了这个问题,以检查弹出窗口中的元素何时生成良好,然后调整弹出窗口的大小 window

var newWin ;
    function openWindow(id) {
        newWin = window.open(url,config,setting);
        var resizePopup = function () {
                newWin.resizeTo(newWin.document.getElementById("certainID").offsetWidth,100);
                newWin.focus();
            };
        var tryResize = function(){
                if(newWin.document.getElementById("certainID")==null){
                    setTimeout(function(){tryResize();},500);
                }
                else{
                    resizePopup();
                }
            }
        tryResize();
        };

如果使用 setTimeout,可能会在 window 尚未完成加载时弹出执行调整大小。我认为最好的解决方案是使用 setInterval 并在 document.readyState==='complete" => 调用 clearInterval() 和 运行 resize

时检查