91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用js實現瀏覽器打印功能

發布時間:2020-07-16 09:27:27 來源:億速云 閱讀:242 作者:Leah 欄目:web開發

如何使用js實現瀏覽器打印功能?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

最近接觸到一個新需求,實現打印機打印小票的功能。打的一桌子小票(慚愧),不過也基本滿足了業務上的需求,現在分享一下如何實現(好記性不如爛筆頭)

先上代碼

// 布局代碼
<p id="print">
    <p id="print_content"></p>
</p>
//js 部分代碼var f = document.getElementById('printf');
   if (f) {
    document.getElementById("print_content").removeChild(f);
   }
   var printhtml = `
   <p 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>聯系電話:${this.ticket.receiverPhone}</p>
    <p>提貨碼:${this.ticket.pickUpCode}</p>
    <p>提貨時間:${this.ticket.submissionTime}</p>
    <p style="color:#FFFFFF">.</p>
   </p>`
   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\\";
    //設置網頁打印的頁眉頁腳為空
    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"); //鍵值設定--左邊邊界
   
     HKEY_Key = "margin_top"
     Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "0"); //鍵值設定--上邊邊界
   
     HKEY_Key = "margin_right"
     Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "0"); //鍵值設定--右邊邊界
   
     HKEY_Key = "margin_bottom"
     Wsh.RegWrite(HKEY_Root + HKEY_Path + HKEY_Key, "0"); //鍵值設定--下邊邊界
    }
    printhtml = `
    <p 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>聯系電話:${this.ticket.receiverPhone}</p>
     <p>提貨碼:${this.ticket.pickUpCode}</p>
     <p>提貨時間:${this.ticket.submissionTime}</p>
     <p style="color:#FFFFFF;font-weight: 100;">.</p>
    </p>`
   }
   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)

因為要求不能把打印的數據顯示在頁面上,所以通過iframe的方式去實現。單純的截取字符串重新賦值body內容能進行打印卻把打印的內容展現在頁面中了,所以不行。

打印針對IE的瀏覽器進行了一定程度的調整,IE打印要做特定的處理,詳見上面判斷代碼。打印內容通過模板字符串加內聯樣式去實現。滿足了基本需求。

是否應該也通過截取頁面字符串的方式去做可能比較浪費性能些,為什么這么說?因為樣式在打印的小票上有一定程度的偏差,修了東墻破了西墻,只能采取相對的方式取舍。如果這種寫法不滿足,可以采取截取字符串寫class嘗試。


看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

玉环县| 南康市| 奎屯市| 集安市| 晋江市| 那坡县| 青岛市| 雷州市| 开阳县| 陆川县| 临澧县| 孟津县| 南开区| 田阳县| 彩票| 甘洛县| 龙井市| 玉门市| 中山市| 西宁市| 南召县| 区。| 浙江省| 金寨县| 新昌县| 达拉特旗| 江津市| 莱州市| 临安市| 长治县| 锡林郭勒盟| 盐城市| 于田县| 沐川县| 峡江县| 洪洞县| 双江| 城口县| 泊头市| 五华县| 教育|