2011-11-25 59 views
3

可能重複:
jQuery .load method not firing on IE9IE9和jQuery 1.6.1和.load()

然而,在IE7和IE8此代碼的工作,在IE9中,我不能讓.load()函數在窗口句柄上工作。

var windowHandle = window.open(url, token, "height=150, width=400,alwaysRaised=yes", false); 

$(windowHandle).load(function() { 
    alert('This is not getting executed in IE9'); 
}); 

編輯:工作液(一種黑客攻擊的)

window.setTimeout(function() { 
    if (windowHandle && windowHandle.document && windowHandle.document.readyState && windowHandle.document.readyState == "complete") { 
     windowHandle_Load(); 
    } else { 
     $(windowHandle).load(windowHandle_Load); 
    } 
}, 1000); 

回答

1

我懷疑,當你的URL是在你的瀏覽器緩存,它完成安裝​​處理程序之前加載。要嘗試檢測條件,你可以試試這個:

if (windowHandle.document.readyState == "complete") { 
    // already loaded 
    alert('This is not getting executed in IE9'); 
} else { 
    // not yet loaded 
    $(windowHandle).load(function() { 
     alert('This is not getting executed in IE9'); 
    }); 
} 

酒店document.readyState已經在大多數瀏覽器一段時間,除非它被添加到Firefox 3.6。

大概你會把你想要執行的代碼分解成一個通用函數,你可以在這兩個地方調用它,而不是有兩個副本。

+0

這很有道理,我會試一試 – CaffGeek

+0

那就是執行代碼,但我必須在1000毫秒的setTimeout中包裝代碼......或者在它之前放置一個警報。 – CaffGeek