2011-03-07 61 views
6

是否可以在瀏覽器中使用帶有JavaScript的打印機打印某些內容?從frontend javascript打印?

我想打印收據編號,所以如果可能的話,什麼是最快的打印機,所以當用戶點擊一個按鈕時,它會打印出來,例如。 「1234」在一張小紙上。

謝謝

回答

11

您無法直接從Javascript訪問打印機,但可以撥打window.print()啓動標準瀏覽器打印行爲。使用這個,你可以嘗試兩種技術來實現你想要的功能:

在調用window.print()之前注入一個動態打印樣式表,它只顯示包含要打印文本的元素。您需要小心清理以前的任何打印樣式表。或者事實上,您可以只使用元素<div id="printable">這是您的打印樣式表中唯一可見的元素,並插入要打印的任何文本。 (請注意,如果這是用戶可能實際想要打印的網站)

也可以直接在iframe窗口中調用print(),您可以使用所需文本填充該窗口。例如:

var iframe = document.createElement('iframe'); 

iframe.onload = function() { 
    var doc = iframe.contentDocument ? iframe.contentDocument : iframe.contentWindow.document; 
    doc.getElementsByTagName('body')[0].innerHTML = "<p>1234</p>"; 

    iframe.contentWindow.focus(); // This is key, the iframe must have focus first 
    iframe.contentWindow.print(); 
} 

document.getElementsByTagName('body')[0].appendChild(iframe); 
4

您無法從瀏覽器中訪問打印設置。

這是出於安全考慮,否則世界各地的打印機都會打印不停。

關於在致電window.print();中的javascript打印,您可以做的唯一一件事。