亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

React如何實現瀏覽器打印部分內容詳析

2024-05-06 16:51:05
字體:
來源:轉載
供稿:網友

前言

近期著手項目任務的打印功能,在此作個記錄,本文介紹基于React的一種調用瀏覽器打印頁面指定內容的方法。

整體思路: 通過構建一個隱藏的元素(該元素包裹需打印的內容),當打印行為觸發時,將頁面其他的一些不需要打印的元素隱藏,然后將需打印的元素追加到body中,打印完成后,再恢復初始狀態即可。瀏覽器打印的本質還是將web頁面中的元素打印出來而已。

1. 構建待打印元素

在頁面中構建一個display為none的元素,里面的內容為你需要打印的內容。我們還需要設置包裹打印內容的元素的ref屬性,以便于后面獲取到元素。

<div style={{ display: 'none' }}> <div ref={el => (this.printRef = el)}> { 打印內容 } </div></div>

2. 打印動作觸發時的處理

處理流程:

  1. 獲取待打印元素;
  2. 將根元素隱藏;
  3. 將待打印元素追加到body中;
  4. 調用瀏覽器的打印預覽;
  5. 預覽界面關閉后,將待打印元素從body中移除,將原始頁面恢復。
let printView = this.state.printRef //獲取待打印元素document.querySelector('#root').className = 'print-hide' //將根元素隱藏document.body.appendChild(printView) //將待打印元素追加到body中window.print() //調用瀏覽器的打印預覽document.body.removeChild(printView) //將待打印元素從body中移除document.querySelector('#root').className = '' //將原始頁面恢復

對應的CSS設置:

@page { size: A4; margin: 0;}@media print { html, body {  min-width: 0;  width: 210mm;   height: 297mm; } .print-hide { visibility: hidden!important; display: none!important; }}

其中,@page中的size可以自己設置紙張的大小,如果是A4紙可以直接設置值為A4,媒體查詢@media print中設置的是打印時的樣式,因為打印設備知道其輸出區域的物理大小,所以使用厘米(cm)、毫米(mm)、英寸(in)等作為打印設計的單位完全可行。

補充(其他原生的打印方法)

直接替換body的內容為要打印的內容,之后再重新刷新頁面。

const old = window.document.body.innerHTML //備份原來的頁面window.document.body.innerHTML = ''window.document.body.appendChild(/* 將你要打印的內容附加到這 */)window.print() //調用print()函數時,會跳出打印預覽的界面,以下的代碼被阻塞,關閉預覽界面后繼續執行window.document.body.innerHTML = oldwindow.location.reload() //重新加載舊頁面

打開一個新窗口,將打印內容放到新窗口打印,打印結束后關閉新窗口

const newWindow = window.open("打印窗口", "_blank")const docStr = '<div>test</div>' //需要打印的內容newWindow.document.write(docStr)const styles = document.createElement("style")styles.setAttribute('type', 'text/css') //media="print"styles.innerHTML = ''newWindow.document.getElementsByTagName('head')[0].appendChild(styles)newWindow.print()newWindow.close()

以上兩種方法可能會造成CSS樣式應用無效的問題。

3. 注意點

第二小節的步驟2中的意思是:將頁面中所有不需要打印的元素隱藏,特別注意像模態窗Model這些元素,也要為它們加上 'print-hide'className屬性。

如果需要在特定位置強制分頁打印,可以嘗試在對應元素上設置page-break-before:always !important、page-break-after:always !importantCSS屬性,該屬性只對塊級元素有效。

進入打印預覽后,我們無法獲知用戶最終是選擇了打印,還是選擇了取消。這里若有人知道解決方法的話,歡迎留言。

React,瀏覽器,打印,部分內容

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一级免费视频| 国外成人在线播放| 成人在线免费观看视视频| 欧美激情在线狂野欧美精品| 中文字幕亚洲欧美日韩在线不卡| 国产精品成人品| 欧美床上激情在线观看| 国产精品av在线播放| 亚洲第一男人av| 久久色精品视频| 色综合91久久精品中文字幕| 国产999精品视频| 国产女同一区二区| 色在人av网站天堂精品| 精品高清一区二区三区| 亚洲香蕉成人av网站在线观看| 久久久久久久久久av| 亚洲伊人第一页| 中文国产亚洲喷潮| 国产精品综合不卡av| 神马久久桃色视频| 色播久久人人爽人人爽人人片视av| 国产69精品99久久久久久宅男| 亚洲成色www8888| 亚洲网址你懂得| 色噜噜亚洲精品中文字幕| 中文字幕日韩视频| 久久深夜福利免费观看| 国产精品最新在线观看| 国产97在线观看| 九九热这里只有精品6| 2019中文字幕在线免费观看| 国产精品视频区| 国产精品极品美女粉嫩高清在线| 日本午夜精品理论片a级appf发布| 欧美一级电影在线| 大荫蒂欧美视频另类xxxx| 国产精品人成电影在线观看| 欧美激情精品久久久久久大尺度| 国产精品v日韩精品| 一区二区在线视频播放| 欧美最近摘花xxxx摘花| 777精品视频| 久久久精品一区二区| 中文字幕欧美亚洲| 国产一区二区三区在线看| 色偷偷9999www| 亚洲免费电影在线观看| 97成人精品视频在线观看| 亚洲第一黄色网| 亚洲欧美日韩一区二区三区在线| 久久久久久中文字幕| 亚洲无线码在线一区观看| 国产精品99一区| 亚洲欧美国产高清va在线播| 成人字幕网zmw| 国产精品一二三视频| 亚洲第一精品夜夜躁人人躁| 黄色成人在线播放| 欧美精品久久久久久久免费观看| 欧美亚洲日本网站| 亚洲精品国产精品乱码不99按摩| 色综合伊人色综合网站| 亚洲天堂网站在线观看视频| 国产裸体写真av一区二区| 亚洲精品www久久久久久广东| 日韩电影大片中文字幕| 国产99久久精品一区二区| xxxxx成人.com| 亚洲欧美日韩精品久久亚洲区| 日本久久久a级免费| 久久久噜噜噜久噜久久| 亚洲欧美综合精品久久成人| 国产精品视频免费在线观看| 懂色aⅴ精品一区二区三区蜜月| 日韩经典第一页| 亚洲字幕一区二区| 国产欧洲精品视频| 日韩中文字幕在线观看| 久久精品99久久久久久久久| 亚洲精品国偷自产在线99热| 欧美在线激情网| 欧美孕妇毛茸茸xxxx| 粗暴蹂躏中文一区二区三区| 欧美自拍视频在线| 国产在线观看精品一区二区三区| 97精品一区二区三区| 欧美亚洲一区在线| 亚洲电影中文字幕| 成人网在线视频| 欧美成人精品一区| 欧美精品成人在线| 亚洲欧美精品在线| 国产精品爽爽爽爽爽爽在线观看| 97在线观看免费高清| 成人国内精品久久久久一区| 久久视频在线免费观看| 最新亚洲国产精品| 精品久久久久久久久久久久| 欧美视频在线视频| 欧美激情第6页| 欧美在线免费观看| 欧美麻豆久久久久久中文| 国产精品免费视频久久久| 亚洲欧美日韩天堂一区二区| 久久精品国产欧美亚洲人人爽| 国产精品一区二区三区毛片淫片| 91网在线免费观看| 亚洲精品按摩视频| 亚洲欧美日韩精品久久亚洲区| 全亚洲最色的网站在线观看| 欧美成在线视频| 疯狂做受xxxx高潮欧美日本| 亚洲性生活视频| 欧美在线观看网址综合| 欧美在线视频a| 国产精品永久在线| 亚洲二区在线播放视频| 91精品综合久久久久久五月天| 91国内在线视频| 欧美成人激情图片网| 国产精品爱啪在线线免费观看| 亚洲bt天天射| 久久天天躁狠狠躁夜夜爽蜜月| 日本电影亚洲天堂| 国产精品xxx视频| 性欧美视频videos6一9| 日韩中文字幕精品视频| 亚洲黄色av女优在线观看| 亚洲美女久久久| 国产精品一区二区久久精品| 91免费看片网站| 国产91精品网站| 亚洲高清免费观看高清完整版| 午夜精品国产精品大乳美女| 久久久久久国产精品| 亚洲欧美精品伊人久久| 91久久久久久久久久久久久| 久久影视电视剧凤归四时歌| www.日本久久久久com.| 国产精品久久久久久亚洲影视| 亚洲欧美国产另类| 亚洲欧美日韩精品久久奇米色影视| 成人av在线网址| 中文字幕久久久av一区| 国产一区二区av| 精品久久久中文| 九九久久久久久久久激情| 欧美国产视频日韩| 亚洲成人免费在线视频| 成人黄色在线观看| 欧美亚洲另类激情另类| 日韩免费在线视频| 亚洲欧美在线x视频| 国产97在线|亚洲| 日韩成人在线观看| 成人午夜在线影院| 色狠狠av一区二区三区香蕉蜜桃| 久久久久久亚洲精品不卡| 国产精品久久久久aaaa九色| 欧美日韩免费一区| 成人精品久久久| 亚洲高清久久久久久| 成人xvideos免费视频|