js實現(xiàn)瀏覽器打印功能的示例代碼
最近接觸到一個新需求,實現(xiàn)打印機打印小票的功能。打的一桌子小票(慚愧),不過也基本滿足了業(yè)務(wù)上的需求,現(xiàn)在分享一下如何實現(xiàn)(好記性不如爛筆頭)
先上代碼
// 布局代碼
<div id="print">
<div id="print_content"></div>
</div>
//js 部分代碼var f = document.getElementById('printf');
if (f) {
document.getElementById("print_content").removeChild(f);
}
var printhtml = `
<div style="font-size:12px;margin-left: -6px;">
<p style="margin-left:40px;">${this.ticket.title}</p>
<p>--------------------------------------</p>
<p>提貨點:${this.ticket.pickUpAddress}</p>
<p>商品名稱:${this.ticket.commodityName}</p>
<p>下單時間:${this.ticket.paymentTime}</p>
<p>提貨人:${this.ticket.receiver}</p>
<p>聯(lián)系電話:${this.ticket.receiverPhone}</p>
<p>提貨碼:${this.ticket.pickUpCode}</p>
<p>提貨時間:${this.ticket.submissionTime}</p>
<p style="color:#FFFFFF">.</p>
</div>`
if (!!window.ActiveXObject || "ActiveXObject" in window) { // 針對IE進行適配
var HKEY_Root, HKEY_Path, HKEY_Key;
HKEY_Root = "HKEY_CURRENT_USER";
HKEY_Path = "\\Software\\Microsoft\\Internet Explorer\\PageSetup\\";
//設(shè)置網(wǎng)頁打印的頁眉頁腳為空
function PageSetup_Null() {
var Wsh = new ActiveXObject("WScript.Shell");
HKEY_Key = "header";
Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "");
HKEY_Key = "footer";
Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "");
HKEY_Key = "margin_left"
Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "0"); //鍵值設(shè)定--左邊邊界
HKEY_Key = "margin_top"
Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "0"); //鍵值設(shè)定--上邊邊界
HKEY_Key = "margin_right"
Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "0"); //鍵值設(shè)定--右邊邊界
HKEY_Key = "margin_bottom"
Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "0"); //鍵值設(shè)定--下邊邊界
}
printhtml = `
<div style="font-size:12px;font-weight: 800;height:150px;width:300px">
<p style="margin-left:35px">${this.ticket.title}</p>
<p>------------------------------------------------</p>
<p>提貨點:${this.ticket.pickUpAddress}</p>
<p>商品名稱:${this.ticket.commodityName}</p>
<p>下單時間:${this.ticket.paymentTime}</p>
<p>提貨人:${this.ticket.receiver}</p>
<p>聯(lián)系電話:${this.ticket.receiverPhone}</p>
<p>提貨碼:${this.ticket.pickUpCode}</p>
<p>提貨時間:${this.ticket.submissionTime}</p>
<p style="color:#FFFFFF;font-weight: 100;">.</p>
</div>`
}
var iframe = document.createElement('iframe');
iframe.id = 'printf';
iframe.style.width = '0';
iframe.style.height = '0';
iframe.style.border = "none";
document.getElementById("print_content").appendChild(iframe);
setTimeout(() => {
iframe.contentDocument.write(printhtml);
iframe.contentDocument.close();
iframe.contentWindow.focus();
iframe.contentWindow.print();
}, 100)
因為要求不能把打印的數(shù)據(jù)顯示在頁面上,所以通過iframe的方式去實現(xiàn)。單純的截取字符串重新賦值body內(nèi)容能進行打印卻把打印的內(nèi)容展現(xiàn)在頁面中了,所以不行。
打印針對IE的瀏覽器進行了一定程度的調(diào)整,IE打印要做特定的處理,詳見上面判斷代碼。打印內(nèi)容通過模板字符串加內(nèi)聯(lián)樣式去實現(xiàn)。滿足了基本需求。
是否應(yīng)該也通過截取頁面字符串的方式去做可能比較浪費性能些,為什么這么說?因為樣式在打印的小票上有一定程度的偏差,修了東墻破了西墻,只能采取相對的方式取舍。如果這種寫法不滿足,可以采取截取字符串寫class嘗試。
以上就是js實現(xiàn)瀏覽器打印功能的示例代碼的詳細內(nèi)容,更多關(guān)于js 瀏覽器打印的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JavaScript中Number對象的toFixed() 方法詳解
下面小編就為大家?guī)硪黄狫avaScript中Number對象的toFixed() 方法詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09
JavaScript轉(zhuǎn)換農(nóng)歷類實現(xiàn)及調(diào)用方法
農(nóng)歷是日常生活中不可或缺的一部分,它與人類的生活息息相關(guān),從某種程度上說,它一直伴隨著我們,今天的任務(wù)是JavaScript轉(zhuǎn)換農(nóng)歷類的實現(xiàn),感興趣的你可以千萬不要錯過,希望本文對你有所幫助2013-01-01
javascript hashtable實現(xiàn)代碼
javascript中沒有像c#,java那樣的哈希表(hashtable), 然而,javascript中的Array也只有一些類似于'哈希表'的非常簡單功能。2009-10-10
JavaScript高級程序設(shè)計 閱讀筆記(二十一) JavaScript中的XML
雖然XML和DOM已經(jīng)變成Web開發(fā)的重要組成部分,但目前僅IE跟Mozilla支持客戶端的XML處理2012-09-09

