2017-02-21 65 views
1

我有一些代碼來打開彈出窗口,然後通過彈出頁面上的某個元素調整它的大小。以下代碼在Chrome和Firefox中正常工作,但不支持IE。爲什麼window.onload不會在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,但似乎它是無效的。

有什麼建議嗎?

+0

嘗試'window.onload = function(){// code}' – locateganesh

回答

1

替換它。最後我通過的setTimeout解決此檢查時,在彈出的元素是良好的生成,然後調整彈出窗口

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(); 
 
     };

0

這是IE中的一個老問題。 最好的解決方案之一是添加new

通常我們寫

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

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

是的,使用這種方式,_alert_將彈出窗口。但是,以這種方式,* IE *和chrome將爲_newWin.document.getElementById(「certainID」)_返回* null *。我發現_new函數()_會導致window.onload比預期的要早得多,所以popup中的元素不能很好地生成。最後,我通過在_Answer_中編寫的解決方法來解決此問題 – cherishty

相關問題