我還沒有能夠解釋相關問題的答案(到我的知識水平),所以...Javascript .onload在IE中不能觸發? window.open參考問題?
我有一個簡單的腳本(使用jQuery),打開一個新窗口和將父項的某些內容添加到子項內的指定容器中。我不知道這是我的方法是錯誤的還是我錯過了一個步驟 - 運行在新窗口上的腳本運行在IE上時,它在window.onload
函數之外,但是這打破了FF,並且當FF裏面的window.onload
,但是然後在IE中的新窗口似乎沒有做任何事情(沒有警報,沒有添加內容,虛無)))。
請任何人都可以向我解釋爲什麼是這樣/我做錯了什麼?這是否與window.open
的引用有關?
這是腳本:
var printPage = function(container){
$('.printButton').click(function(){
var printWindow = window.open('printWindow.html');
var contentFromParent = $(container).eq(0).html();
/*works for IE, but not FF
printWindow.alert('works for IE, but not FF');
printWindow.document.getElementById('wrap').innerHTML = contentFromParent;*/
/*works for FF and Chrome but not IE:*/
printWindow.onload = function(){
printWindow.alert('works for FF and Chrome but not IE');
printWindow.document.getElementById('wrap').innerHTML = contentFromParent;
}
/*I also tried:
$(printWindow.document).ready(function(){
printWindow.alert('load the page, fill the div');
printWindow.document.getElementById('wrap').innerHTML = contentFromParent;
}); //works for IE, not working for FF/Chrome*/
})
}
printPage('#printableDiv');
的HTML:
<div id="wrap">
<button href="#" class="printButton">Print</button>
<div id="printableDiv">
<p>I want to see this content in my new window please</p>
</div>
</div>
UPDATE 感謝您對新窗口的onload指針 - 我已經走了這個解決方案現在:Setting OnLoad event for newly opened window in IE6 - 簡單地檢查DOM並延遲onload - 爲IE7/8/9工作。
我不確定您是否稱其爲「優雅」解決方案,但它的工作原理!進一步的意見,特別是如果你認爲這是有缺陷的,將不勝感激。謝謝。
var newWinBody;
function ieLoaded(){
newWinBody = printWindow.document.getElementsByTagName('body');
if (newWinBody[0]==null){
//page not yet ready
setTimeout(ieLoaded, 10);
} else {
printWindow.onload = function(){
printWindow.alert('now working for all?');
printWindow.document.getElementById('wrap').innerHTML = contentFromParent;
}
}
}
IEloaded();
http://stackoverflow.com/questions/3030859/detecting-the-onload-event-of-a-window-opened-with-window-open – Ian 2013-05-10 14:37:18