2011-03-07 56 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打印,您可以做的唯一一件事。