为什么 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
时检查
我有一些代码可以打开一个弹出窗口,然后通过弹出页面上的某个元素调整它的大小。以下代码在 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
时检查