Javascript 为什么不在IE中启动window.onload

Javascript 为什么不在IE中启动window.onload,javascript,jquery,internet-explorer,onload,Javascript,Jquery,Internet Explorer,Onload,我有一些代码来打开一个弹出窗口,然后通过弹出页面上的某些元素调整它的大小。下面的代码在Chrome和Firefox中运行良好,但在IE中不行 var-newWin; 函数openWindow(id){ newWin=window.open(url、配置、设置); newWin.onload=函数(){ newWin.resizeTo(newWin.document.getElementById(“certainID”).offsetWidth,100); }这是IE中的一个老问题。 最好的解决

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

var-newWin;
函数openWindow(id){
newWin=window.open(url、配置、设置);
newWin.onload=函数(){
newWin.resizeTo(newWin.document.getElementById(“certainID”).offsetWidth,100);

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

通常我们写

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

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

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

var-newWin;
函数openWindow(id){
newWin=window.open(url、配置、设置);
var resizePopup=函数(){
newWin.resizeTo(newWin.document.getElementById(“certainID”).offsetWidth,100);
newWin.focus();
};
var tryResize=函数(){
if(newWin.document.getElementById(“certainID”)==null){
setTimeout(函数(){tryResize();},500);
}
否则{
调整弹出窗口的大小();
}
}
tryResize();

};
如果使用setTimeout,可能会在窗口尚未完成加载时弹出窗口执行大小调整。我认为最好的解决方案是使用setInterval并随时检查文档。readyState=='complete'=>调用clearInterval()并运行resize

尝试
window.onload=function(){//code}
是的,使用这种方式警报将自动弹出。但是,通过这种方式,IE和chrome都会为newWin.document.getElementById(“certainID”)返回null。我发现新函数()将导致比预期更早地触发window.onload,从而导致弹出窗口中的元素无法正常生成。最后,我通过答案中编写的解决方法解决了这一问题