2011-11-22 77 views
3

在我的chrome瀏覽器版本17.0.942.0 winvista中,printdlg不是通常的模式系統-printdlg,而是在網站本身內部呈現。所以我想按照here的描述打印畫布內容。但代碼從鉻打印JavaScript:如何知道打印完成?

window.print(); window.close();

不會工作,因爲window.close也關閉PRINTDLG。所以在鉻window.close必須由用戶發起或以某種方式推遲。有沒有辦法知道window.print是否已完成,以便窗口可以自動關閉?

+0

我不知道你可以重寫打印對話框,我認爲這是一個操作系統生成的對話框?你可以附上一個屏幕截圖,所以我們可以看看? –

+0

Imo不能覆蓋打印dlg,chrome只是引入了一個新的標準,它在網站中呈現。截圖應該顯示它:[點擊](http://img12.imageshack.us/img12/7715/chromeprint.jpg) – Pl4n3

+0

很酷,謝謝澄清@Pl4n3 –

回答

3

這個腳本添加到您的彈出打印窗口print_window_close.js的

<script src="/assets/print_window_close.js" type="text/javascript"></script> 

內容是

jQuery(document).ready(function() { 

    setTimeout(function() { 
     window.close(); 
    }, 1); 

}); 

基本上seTimeout只調用該文件被聚焦時,這隻有在疊加打印對話框關閉時纔會發生。因此它的工作原理與您想要的完全相同。

+0

你真的想讓setTimeout每毫秒運行一次嗎?也許它應該是500?此外,這會導致調用新窗口的原始窗口相對於JS掛起。頁面上的所有JS功能都不再起作用。我已經注意到這個問題有幾種不同的方法,並沒有能夠找出核心問題。 – Clayton