2011-08-04 43 views
2

我有一個lightbox插件,需要額外的選項 - 打印圖像。 所以我做了打印圖像如下一點的JS函數:window.print()javascript does not get previewed in chrome

var headstr="<!DOCUMENT html><html xmlns='http://www.w3.org/1999/xhtml'><head><title></title></head><body>"; 
var footstr="</body>"; 
var newstr="<img src=\"[img-location]\" alt='courses' />"; 
document.body.innerHTML=headstr+newstr+footstr; 
window.print(); 
window.location.reload(); 

的問題是,當打印按鈕,用戶按下後,chrome它會打開一個新窗口(鉻打印頁),並在其中它說 - print preview failed。在Firefox和IE8中,它工作得很好...

回答

0

我不確定這是否是問題,但是您正在創建無效的html。首先,你不要關閉<html>標籤。另外,你正在把htmlhead標籤放在你的身體內。

+0

我加一個結束的HTML標籤,但有什麼不妥: - 又名 - 你的第二句話。順便說一句,關閉HTML仍然沒有幫助。 – Nir

+0

該結構適用於整個頁面,但您將其插入到body \ document.body.innerHTML'中。所以,你已經有了''和裏面的,你把另一' etc.' –

+0

哦,對了,我該怎麼辦文件= headstr + +中newstr footstr?我想要它,因爲它也刪除了現有的標題內容 – Nir

3

我不知道這是什麼原因導致了你的失敗,但是如果window.print()是從一個<輸入類型=「提交」>調用的方法=「後」的形式(即每個asp。網頁有史以來)然後Chrome打印預覽假髮了。

解決方法是添加返回false;在window.print()之後,這樣頁面不會回發。

<html> 
<head> 
</head> 
<body> 
    <form method="post" action="test.html"> 
    <p>This is only a test. Had this been a real emergency....</p> 

    <!--This doesn't work --> 
    <!-- <input type="submit" onclick="JavaScript:window.print();">--> 

    <!--But this does --> 
    <input type="submit" onclick="JavaScript:window.print();return false;"> 

</form> 
</body> 
</html> 
+0

抱歉,但這不起作用。 – kta