2012-07-10 104 views
1

爲什麼這不起作用?只加載頁面。沒有打印。在這裏,我採用iframe的src並在新窗口中打開該URL。Window.print()不起作用

var myDivObj = document.getElementById('resumedocument').src; 
var someXml = '<html><title>Resume</title><body onload="window.print();"><iframe style="height: 1000px; width: 1260px;" src="' + myDivObj + '"/></body></html>'; 
var printwindow = window.open('', '_blank','fullscreen=yes'); 
printwindow.document.write(someXml); 
printwindow.onload = function() {        
    printwindow.self.focus(); 
    printwindow.self.print(); 
}; 
+1

你有什麼就可以調試? – 2012-07-10 04:36:15

+1

我會*假設*,這是一個,沒有定義。 'document.getElementById('resumedocument')。src' – 2012-07-10 04:37:10

+1

'爲什麼這不起作用?不是在SO上張貼的有效理由。需要展示一些工作。 – 2012-07-10 04:38:00

回答

2
var url = document.getElementById('resumedocument').src; 
var printwindow = window.open('', '', 'fullscreen=yes'); 
printwindow.document.write('<iframe width="100%" height="100%" onload="window.print()" src='+url+'></iframe>'); 
+0

@ Heera:非常感謝。我得到了印刷品。但問題。當我關閉窗口時,會顯示打印彈出窗口。 – 1355 2012-07-10 09:09:58

+0

歡迎,你的意思是打印對話框? – 2012-07-10 09:15:30

+0

雅。我的意思是在關閉新窗口時彈出打印對話框。 – 1355 2012-07-10 09:24:24

1

您是否嘗試沒有自己,如在printwindow.print()

+1

我不會推薦你用你沒有測試過的代碼發佈答案。 – Daedalus 2012-07-10 04:45:53

+0

'printwindow.self.print();'本身就行。我認爲問題更多的是關於何時/如果這條線被執行。 – nnnnnn 2012-07-10 04:46:20

+0

我嘗試了所有這些。但我總是打印空白頁。 – 1355 2012-07-10 04:52:35

2

你不需要在onload上做,因爲你正在做自己的document.write。下面的代碼工作爲例:

var someXml = '<html><body>Stuff</body></html>'; 
    var printwindow = window.open('', '_blank','fullscreen=yes'); 
    printwindow.document.write(someXml); 
    printwindow.print(); 

我覺得你的問題是在onload文檔已經被加載時window.open方法時會觸發。在這個時候你的文檔是'',所以沒有處理程序。

要等待IFRAME加載,你需要在那裏移動onload處理程序。例如:

var someXml = '<html><body><iframe id=Frame width="800" height="800" src="http://jsfiddle.net" /></body></html>'; 
    var printwindow = window.open('', '_blank','fullscreen=yes'); 
    printwindow.document.write(someXml); 
    printwindow.document.getElementById('Frame').onload = function() { 
     printwindow.self.focus(); 
     printwindow.print(); 
    };​ 
+0

是的。我試過這個。打印是好的。但總是空白頁 – 1355 2012-07-10 04:54:42

+1

'document.write()'正在寫一個iframe,我認爲OP希望在打印之前等待iframe加載它的內容。 (但是,iframe的父級上的onload不會等待iframe。) – nnnnnn 2012-07-10 04:54:51

+0

那麼你是否嘗試過更新? – Michael 2012-07-10 06:13:52

2

替換此行:

printwindow.onload = function() {        
    printwindow.self.focus(); 
    printwindow.self.print(); 
}; 

這一行:

printwindow.document.getElementsByTagName('iframe')[0].onload = function() { 
    printwindow.self.focus(); 
    printwindow.print(); 
};