2011-04-15 149 views
4

我想打開一個使用JavaScript的文檔文檔以及打開的文檔窗口打開對話框。如何使用JavaScript打印對話框打開文件

這是我的代碼。

window.open('http://www.tizaq.com'); 

window.print(); 

它可以工作,但打印對話框會在當前窗口打開,而不是新打開的窗口打開。我該怎麼做?

回答

13

呼叫print新窗口,而不是老於:

var wnd = window.open('http://stackoverflow.com'); 
wnd.print(); 

我不喜歡你的勝算,不過,它不觸犯下降瀏覽器的安全性。 :-)「外部」窗口對象可能不支持printwindow)對象有兩種類型,其他窗口可以訪問的「外部」類型以及引用自身的「內部」類型,它具有更多權限等)至少,你可能不得不等待加載事件,但我最好總體來說這將是棘手的。

seems to work對於具有相同來源的文檔,所以Same Origin Policy是一個因素。這個例子在IE6中崩潰(字面意義上使瀏覽器崩潰),但在Windows上的IE7和Linux上的Chrome和Firefox 3.6(而不是Linux上的Opera 11)中適用於我。大概不會傷害到把延遲/產量在那裏,例如:

var wnd = window.open(your_path_here); 
setTimeout(function() { 
    wnd.print(); 
}, 0); 

你說「Word文檔」,在你的問題,但你的例子看起來像一個網站。我不知道這是否會工作,如果你打開一個Microsoft Word文檔加載到瀏覽器窗口。

+1

我想同樣的事情,但它不是在任何瀏覽器爲我工作。 (更正:它適用於Windows中的FF4;不適用於Chrome 10和IE8) – 2011-04-15 09:00:30

+0

@Pekka:是的,我認爲瀏覽器的安全性很可能會出現在我面前。我用過的每個平臺都會打開一個對話框,我可以取消,所以這不是那種罪惡。 :-) – 2011-04-15 09:03:09

+0

我試過了。但不能在Firefox中工作。 – Coder 2011-04-15 09:07:18

-1

好,更好的辦法

var my_window = window.open("", "mywindow1", "status=1,width=350,height=150"); 
my_window.document.write("<scr" + "ipt>window.location.href='http://stackoverflow.com';window.print();</scr" + "ipt>"); 

嘗試像這樣或更好地使使用iframe的另一頁打印

+1

雖然'Window.Print();'會失敗(它是'window.print()',JavaScript區分大小寫),這不是一個壞主意。但你真的做到了嗎?當我嘗試它時,打印結果是空白的。我想知道它是否適用於Word文檔。 – 2011-04-15 10:04:51