2010-09-17 112 views
0

我有一個像打開窗口通過window.open與window.print打印負荷

var windowObject = window.open('','windowObject','arguments...'); 
windowObject.document.write("<html><body onload="alert(1);window.print();alert(2);"><div>some html</div></body></html>"); 

問題的一些代碼是一切正常,除了window.print事件(即上,在Firefox,它的加工)。

是否有解決方法?

由於提前, 拉夫

+0

奇怪。看起來沒問題....沒有錯誤? – 2010-09-17 15:11:08

+0

語法高亮顯示修復錯誤。 – Hello71 2010-09-17 22:57:56

回答

1

這是一個引號問題:onload=後的雙引號結束的字符串被寫入文件。將onload引號更改爲單引號。您還需要添加一個調用該文件的close()方法:

var windowObject = window.open('','windowObject','arguments...'); 
windowObject.document.write("<html><body onload='alert(1);window.print();alert(2);'><div>some html</div></body></html>"); 
windowObject.document.close(); 
+0

嗨,感謝,但仍然無法正常工作。現在我的代碼如下 – gaurav 2010-09-20 04:46:22

+0

啊,是的,你需要調用'windowObject.document.close()'。我已經更新了我的答案。 – 2010-09-20 08:35:52

0

在這一行,看來你要使用嵌套的雙引號:

windowObject.document.write("<html><body onload="alert(1);window.print();alert(2);"><div>some html</div></body></html>"); 

你更容易想請執行以下操作:

windowObject.document.write('<html><body onload="alert(1);window.print();alert(2);"><div>some html</div></body></html>'); 
0

Chrome不允許我們在新打開的窗口/選項卡中進行打印。您可以通過添加一個新的html文件來達到您的要求,如 <body onload="window.print()"><div>Some html</div></body> 並將您的代碼替換爲var windowObject = window.open('<path_to_your_new_html>','windowObject','arguments...');