0

我已經申請打開彈出窗口來打印頁面。Javascript window.open firefox/chrome問題

function printHTML(urlPath) { 
    var printPopUp = window.open(urlPath,null,"height=600,width=777,status=yes,toolbar=no,menubar=no,location=no,scrollbars=yes"); 
    printPopUp.print(); 
} 

此腳本在IE中工作正常,但在Firefox/Chrome中。 print()功能重疊window.open,結果打印對話框首先顯示屏幕仍在加載。我需要關閉打印對話框才能正確渲染頁面然後手動打印。

請指教。

+0

,你將在同一個域中進行打印網址嗎? – Kinlan 2010-04-13 09:39:39

+0

是的,Chrome中的相同域名 – Adelave 2010-04-13 10:05:38

回答

0

如您的評論所示,要列印的網址位於同一網域。你不能訪問其他窗口的內容,所以你將不得不在彈出的窗口上設置一些代碼,它會調用開啓者來告訴它它已經打開。

popup.html

<script> 
function onLoad() { 
    if(window.opener && window.opener.popupLoaded) { 
    window.opener.popupLoaded(); 
    } 
} 
</script> 
<html onload="onLoad();"> 

main.html中

function popupLoaded() { 
    popup.print(); 
} 
0

在頁面加載後運行打印,例如,

printPopUp.onload = function() { printPopUp.print() } 

(未測試)

+0

至少不能用。 – Kinlan 2010-04-13 09:39:16

+0

它不能在FF3 + Chrome – Adelave 2010-04-13 10:10:16

0

我建議調用的頁面window.print()被裝入彈出,而不是在揭幕戰。

+0

不能工作,因爲這是全局腳本,它在所有頁面上共享。如果我這樣做,我需要在所有頁面上覆制代碼。 – Adelave 2010-04-13 10:05:21