Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 亚洲久久在线,中文字幕一区二区区免,欧美在线日韩

          整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          HTML 打印問題匯總

          前幫客戶做合同和協(xié)議打印的時候,收集過一些打印相關(guān)的資料,整理了一下內(nèi)容,分享給有需要的朋友。

          • 如何發(fā)起打印
          • 如何只局部打印
          • 分頁
          • 不詢問直接打印
          • 無邊距打印
          • 自定義頁碼
          • 橫向打印
          • 雙面打印
          • 打印多份

          發(fā)起打印的方法

          1. window.print() 打印整個頁面,所有主要瀏覽器都支持 print() 方法,執(zhí)行后會啟動一個打印對話框,Chrome的打印對話框自帶預(yù)覽功能,IE、火狐只彈出打印設(shè)置對話框,沒有預(yù)覽功能。
          2. document.execCommand("print") 該方式也兼容各個版本的瀏覽器,功能同window.print()一樣,不過已經(jīng)不建議使用了。
          3. 使用html 標(biāo)簽<object>引入Webbrowser控件,這種方式只兼容IE,部分調(diào)用方式如下:

          <body>
            <object id="WebBrowser" classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height="0" width="0"></object>
          </body>
          <script>
            WebBrowser.ExecWB(1,1) // 打開 
            WebBrowser.ExecWB(2,1) // 關(guān)閉現(xiàn)在所有的IE窗口,并打開一個新窗口 
            WebBrowser.ExecWB(4,1) // 保存網(wǎng)頁
            //--------------- 常用 --------------
            WebBrowser.ExecWB(6,1) // 打印
            WebBrowser.ExecWB(6,6) // 直接打印
            WebBrowser.ExecWB(7,1) // 打印預(yù)覽
            WebBrowser.ExecWB(8,1) // 打印頁面設(shè)置
            //------------------------------------- 
            WebBrowser.ExecWB(10,1) // 查看頁面屬性
            WebBrowser.ExecWB(15,1) // 撤銷
            WebBrowser.ExecWB(17,1) // 全選
            WebBrowser.ExecWB(22,1) // 刷新
            WebBrowser.ExecWB(45,1) // 關(guān)閉窗體無提示
          </script>

          1. 直接用JQuery插件
            • jquery.print.js 地址:https://github.com/DoersGuild/jQuery.print
            • jquery.print-preview.js 地址:https://github.com/etimbo/jquery-print-preview-plugin

          通過$("#id").print(/options/)和$('#id').printArea(/options/)調(diào)用,其中的options可以配置一些選項,具體看對應(yīng)的說明文檔。

          1. 采用第三方瀏覽器插件

          收費的、不收費的都有,這里就不多提了。

          復(fù)雜的套打可以選第三方插件。jQuery插件是封裝的print方法,我前幾年給銀行網(wǎng)點做了個小系統(tǒng)需要局部打印,選了插件,其實沒有很理想,需要自己做一些調(diào)整才行。大部分情況用print就能解決。

          局部打印

          頁面上顯示的內(nèi)容與最終需要打印的內(nèi)容之間總是存在差異的,從兩個方向解決這個問題,一個是打印時只顯示需要打印的部分,另一個是打印前調(diào)整頁面的內(nèi)容,只保留需要打印的部分。可以用到下面幾個方法:

          css media query 可以寫一些只在打印時有效的樣式,例如控制頁面某個按鈕打印時隱藏

          @media print{
              .no-print{
                  display:none
              }
          }

          可以用onbeforeprintonafterprint在打印前重新編輯內(nèi)容,專門送去打印,打印后又處理回來。

          function window.onbeforeprint()
          { //將一些不需要打印的隱藏 }
          
          function window.onafterprint()
          { //放開隱藏的元素 }
          // polyfill
          // 對于基于Webkit的瀏覽器,您可以創(chuàng)建一個等效的結(jié)果window.matchMedia('print')。
          // var mediaQueryList = window.matchMedia('print');
          // mediaQueryList.addListener('change', function(mql) {
          //   if(mql.matches) {
          //     console.log('webkit equivalent of onbeforeprint');
          //   }
          // });

          onbeforeprint 在設(shè)置頁面打印之后但是在打印對話框出現(xiàn)之前執(zhí)行 JavaScript

          onafterprint 定義為在設(shè)置頁面打印且打印對話框已出現(xiàn)之后,執(zhí)行一段 JavaScript。只有 Internet Explorer 和 Firefox 支持 onafterprint 事件屬性。但是:在 IE 中,onafterprint=屬性在打印對話框出現(xiàn)之前而不是之后發(fā)生。

          onbeforeprint fired before dialog appears and allows one to change html and so on.onafterprint is fired just before dialog appears. It is not even possible to know, whether document was actually printed or user canceled it. Needless to say about when printing finished (if started at all).Again: no event is available to track anything happened in print dialog, i.e. answer to your question is no.Moreover, I hope what your need will never be implemented, cause this allows to frustrate user. He/she asks to print one document, but got something different.

          改變頁面內(nèi)容的方式體驗比較糟糕,個人不推薦,jq插件默認(rèn)是用iframe,其實還可以window.open一個單獨的打印頁面,預(yù)覽和打印都好解決,兩種方式都需要注意樣式表是在原來的頁面,需要稍微注意下樣式是否有缺失。

          分頁

          page-break-before:always;
          page-break-after:always;
          page-break-inside:avoid;

          用樣式可以控制主動使用分頁符,沒用過的可以看下這里

          http://www.w3school.com.cn/cssref/pr_print_page-break-after.asp

          不詢問直接打印

          有3種辦法,但都有限制

          1. 使用插件實現(xiàn)

          網(wǎng)上下載ScriptX.cab文件
          下載成功后將文件放在項目某個目錄下,然后在頁面body中寫上:

          <object id="factory" name="factory" style="display: none" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" codebase="ScriptX.cab" viewastext></object>

          codebase屬性為ScriptX.cab文件的放置路徑(絕對路徑)
          調(diào)用:factory.printing.Print(false)即可

          1. webbrowser實現(xiàn)

          需要修改IE瀏覽器安全設(shè)置,否則還是會彈出對話框

            • 安全 -> 本地Intranet -> 自定義級別 - 找到ActiveX控件和插件項,選擇對未標(biāo)記為可安全執(zhí)行的ActiveX控件初始化并執(zhí)行腳本,再選擇啟用
            • 安全 -> 受信任的站點 -> 自定義級別 - 找到ActiveX控件和插件項,選擇對未標(biāo)記為可安全執(zhí)行的ActiveX控件初始化并執(zhí)行腳本,再選擇啟用
            • 安全 -> 受信任的站點 -> 站點 -> 添加受信任訪問站點(如果是訪問遠(yuǎn)程那么是對方IP地址,如果是本地則是本機IP.例如http://192.168.172.1)

          然后執(zhí)行

          document.getElementById('WebBrowser').ExecWB(6,2,3)
          1. vb實現(xiàn)結(jié)合webbrowser實現(xiàn)

          可以使用vb,但是IE11開始已經(jīng)被微軟廢棄,無法執(zhí)行vb代碼了。

          execScript('document.getElementById("WebBrowser").ExecWB 6, 2, 3','vbscript');

          無邊距打印

          無邊距打印是打印機的一種功能,即全幅打印,打印紙不留空白。
          適用于照片打印,廣告打印,海報打印等。
          目前的主流打印機都有支持該功能的型號。
          當(dāng)在應(yīng)用程序中創(chuàng)建用于打印的數(shù)據(jù)時,需要調(diào)整數(shù)據(jù)到打印紙的尺寸。如果應(yīng)用程序中有邊距設(shè)置,應(yīng)確保在打印前將它們設(shè)為零。
          注意:
          使用此功能進行打印將比普通打印要花更長時間。
          使用此功能打印輸出的頂部和底部區(qū)域的打印質(zhì)量可能會下降,或者在上面未列出的介質(zhì)上打印時該區(qū)域可能會污損。在打印大量的作業(yè)之前先打印一頁以檢查打印質(zhì)量。

          自定義頁碼

          遇到的一個需求,只打印合同中需要填寫數(shù)據(jù)的幾頁,不能使用自帶的頁碼,所以把自帶的頁碼去掉,然后寫個div定位到原來頁碼的位置,里面的內(nèi)容就可以自己控制了。需要注意:
          1. 頁面打印區(qū)域的原因,不是在任意打印機上都可以把頁碼打印在紙張的邊緣,需要根據(jù)打印機的可打印區(qū)域調(diào)整。
          2. 頁碼需要使用到絕對定位,所以要求打印的內(nèi)容是確定的,目前遇到有這個需求的,打印內(nèi)容也都是固定的。

          橫向打印

          chrome 支持 @page 規(guī)則

          @page{size : A4 lanscape;}

          雙面打印

          需要在打印首選項中設(shè)置。

          注意:有時候需要通過加個空白頁來讓后面的內(nèi)容從新的一張紙開始打印。

          打印份數(shù)

          打印設(shè)置里可以修改,不過很難用程序控制打印份數(shù)??梢郧€實現(xiàn),在打印的時候,直接把內(nèi)容重復(fù)N遍再打印一份出來的就是N份了。

          時代變得真快,現(xiàn)在的IE都已經(jīng)退出了歷史舞臺。新框架一個接一個冒出來,老系統(tǒng)里的這些老代碼,不知道什么時候會消失。

          瀏覽網(wǎng)頁時,大家有時候會發(fā)現(xiàn)網(wǎng)頁中對工作、生活以及學(xué)習(xí)方面有益的資料,當(dāng)網(wǎng)頁上的資料比較重要時,大家可以將網(wǎng)頁上的資料打印出來,網(wǎng)頁上的資料怎么打印出來呢?

          其實,打印網(wǎng)頁上的資料是比較簡單的,大家可以直接將網(wǎng)頁上的資料另存到電腦本地,如果自己所使用的電腦和打印機相連接,直接使用打印機打印即可;如果沒有打印機的話,也可以選擇在網(wǎng)上打印資料。

          網(wǎng)上打印好處多多,在網(wǎng)上可以直接打印各種文件資料,直接搜索網(wǎng)上打印平臺易桌面打印室,大家可以直接將整理在電腦本地的資料上傳到打印平臺,選擇打印的份數(shù)、規(guī)格等,系統(tǒng)自動為大家估算價格,在易桌面打印室打印資料的價格是比較便宜的,具體的打印價格可參考官方網(wǎng)站的價格表。

          易桌面打印室打印速度較快,可能單憑一個“快”字,大家無法感受到該平臺的打印速度,打個比方吧,比如打印者當(dāng)天下午15:00前在平臺提交的少于1000頁的文件資料,一般可在當(dāng)天下午發(fā)貨,如果在14:00~15:00間提交的量比較大的資料,當(dāng)天如果不能打印完成,會在第二天優(yōu)先打印并安排發(fā)貨。

          另外,易桌面打印室作為一家專業(yè)的網(wǎng)上在線打印平臺,除了可以為大家打印資料文件外,還可以為大家裝訂文件、資料,支持釘裝、膠裝等,平臺有專業(yè)的裝訂設(shè)備,可以快速為大家裝訂各種文件資料,裝訂價格也比較便宜。

          ello,各位小伙伴,今天廣州藍(lán)景跟大家分享前端技術(shù)干貨,頁面加載速度問題。

          首先我們都討厭加載緩慢的頁面!

          要知道加載時間每增加1秒(0-5秒之間),網(wǎng)站轉(zhuǎn)化率就會平均下降4.42%。頁面加載時間的前五秒對轉(zhuǎn)化率的影響最大。


          幸運的是,我們可以通過優(yōu)化HTML和CSS文件來提高網(wǎng)站的頁面加載速度,而無需花費昂貴的服務(wù)器資源!

          注:本文將僅關(guān)注如何使用HTML和CSS文件來提高頁面加載速度。

          延遲加載

          延遲加載是一種縮短關(guān)鍵渲染路徑長度的策略,從而減少頁面加載時間。

          a) 拆分CSS文件

          盡量拆分CSS文件,避免完整CSS在所有尺寸的屏幕上執(zhí)行。

          <!-- 加載和解析整個sytles.css文件會阻塞主瀏覽器渲染 -->
          <link rel="stylesheet" href="styles.css" />

          對于打印媒體,可以使用:

          <!-- 加載和解析print.css時不會阻塞渲染,只會在打印模式加載該樣式 -->
          <link rel="stylesheet" href="print.css" media="print" />

          對于移動設(shè)備屏幕,可以使用:

          <!-- 只會在移動設(shè)備這樣的小屏幕下才會加載和解析該樣式 -->
          <link
          rel="stylesheet"
          href="mobile.css"
          media="screen and (max-width: 480px)" />

          對于平板電腦屏幕,可以使用:

          <!-- 不會在大屏幕上加載和解析該樣式 -->
          <link
          rel="stylesheet"
          href="tablet.css"
          media="screen and (max-width: 1080px)" />

          對于移動屏幕橫屏或豎屏,也可以使用不同的CSS文件:

          <!-- Loading and parsing portrait.css is not render-blocking on landscape screens -->
          <link href="portrait.css" rel="stylesheet" media="(orientation:portrait)" />

          通過將CSS分離成多個文件,主文件(在本例中為styles.css)變得小多了,從而減少了渲染被阻塞的時間,大大提高了頁面加載速度。

          b) CSS的font-display屬性

          font-display屬性應(yīng)用于@font-face規(guī)則,定義瀏覽器如何加載和顯示字體文件,從而允許在字體加載或加載失敗時以回退字體顯示文本。這可以通過使文本可見取代空白屏幕來提高性能,但代價是閃爍無樣式的文本。

          @font-face {
          font-family: "nunito", sans-serif;
          font-weight: 400;
          font-style: normal;
          font-display: fallback;
          }

          c) HTML文件中的圖片懶加載

          使用loading="lazy",以便僅在需要時加載圖像。這將大大降低頁面加載速度。

          <img src="my-logo.png" alt="KOUSTAV" loading="lazy" />

          2. 選擇正確的圖片格式

          .webp格式的圖片被推薦作為網(wǎng)絡(luò)的圖片格式標(biāo)準(zhǔn)。

          WebP無損圖片在尺寸方面比PNG小26%。WebP有損圖片比同等SSIM質(zhì)量指數(shù)下的同類JPEG圖片小25-34%。動畫WebP圖片支持有損、無損和透明,與GIF和APNG相比,可以提供更小的尺寸。

          下圖是WebP與PNG圖片格式對比:

          下圖是WebP與JPEG圖片格式對比:

          所有這些測試都可以證明,即使是有損壓縮,webp圖片的壓縮率也更高,因此大大減少了頁面加載時間!

          你還可以嘗試另一種圖片格式.avif,在少數(shù)情況下比.webp更好,但由于該格式比較新(2019年發(fā)布),因此還沒有多少瀏覽器支持.avif格式!

          使用<picture>元素

          a) 可用于針對不同的media條件裁剪或修改圖片(例如,在較小的顯示器上加載大圖片的縮略版本)。

          b)在不支持webp格式的情況下提供替代圖片格式。

          c)通過為查看器加載最合適的圖片來節(jié)省帶寬并加快頁面加載時間。

          如果為高DPI顯示器提供更高分辨率的圖像版本,請改用<img>元素上的srcset。這允許瀏覽器在數(shù)據(jù)保存模式下選擇低分辨率版本,并且你不必編寫顯式media條件。

          <picture>
          <source srcset="my-logo-wide.webp" type="image/webp" media="(min-width: 600px)" />
          <source srcset="my-logo-wide.jpeg" type="image/jpeg" type="image/jpeg" media="(min-width: 600px)" />
          <source srcset="my-logo-narrow.webp" type="image/webp" />
          <img src="my-logo-narrow.png" alt="KOUSTAV" loading="lazy" />
          </picture>

          3. 渲染圖像

          由于圖像是異步加載的,并在第一次繪制后繼續(xù)加載,如果在加載之前未定義其尺寸,則可能會導(dǎo)致重排到頁面內(nèi)容。例如,文本因加載圖像而被推下頁面。因此,設(shè)置width和高h(yuǎn)eight屬性至關(guān)重要,以便瀏覽器可以在布局中為它們保留空間。

          對于任何background-image,設(shè)置background-color值很重要,以便在下載圖像之前,覆蓋的內(nèi)容保持可讀。

          4. 壓縮HTML和CSS文件

          壓縮指的是從代碼中刪除所有不必要的字符以減小尺寸。刪除的是不需要的空格字符,如空格、換行符、制表符等以及注釋。

          使用壓縮工具,如CodeBeautify,CSS Minifier等來縮小HTML和CSS文件。有助于為網(wǎng)站提供更快的頁面加載速度。


          主站蜘蛛池模板: 国产精品夜色一区二区三区| 无码夜色一区二区三区| 99精品一区二区三区| 精品无人区一区二区三区| 精品国产一区二区三区香蕉事 | 亚洲香蕉久久一区二区| 久久精品一区二区三区中文字幕| 在线播放精品一区二区啪视频| 亚洲国产一区二区a毛片| 精品日韩在线视频一区二区三区| 秋霞日韩一区二区三区在线观看| 中文字幕无线码一区2020青青| 亚洲综合一区二区精品久久| 中文字幕亚洲一区| 日韩人妻无码一区二区三区久久99| 四虎一区二区成人免费影院网址| 无码人妻久久一区二区三区免费丨| 无码人妻精品一区二区蜜桃网站 | 国产在线精品一区二区在线看| 精品国产a∨无码一区二区三区| 奇米精品视频一区二区三区| 少妇激情AV一区二区三区| 久久国产一区二区三区| 精品无人区一区二区三区| 亚洲av无码一区二区三区天堂古代 | 久久精品免费一区二区喷潮| 无码人妻精品一区二区三区久久久| 日韩精品一区二区三区中文精品| 麻豆文化传媒精品一区二区| 男插女高潮一区二区| 成人精品视频一区二区三区尤物| 欧洲精品一区二区三区| 国产成人精品一区在线 | 国产日韩一区二区三免费高清 | 日本免费一区尤物| 一区二区高清视频在线观看| 日韩综合无码一区二区| 2021国产精品一区二区在线| 爱爱帝国亚洲一区二区三区| 久久国产精品免费一区| 香蕉久久av一区二区三区|