如何通過JavaScript或CSS控制瀏覽器打印設置中的頁首和頁尾?

如何通過JavaScript或CSS控制瀏覽器打印設置中的頁首和頁尾?

JavaScriptcss能否控制瀏覽器打印設置的頁眉頁腳?

許多開發者希望利用JavaScript或CSS來控制瀏覽器打印對話框中的頁眉頁腳設置,例如默認取消勾選或自定義頁眉頁腳內容。然而,這并非易事,本文將深入探討其可行性及局限性。

問題概述

目標是通過代碼控制瀏覽器打印設置中的頁眉頁腳選項,具體要求:

  1. 默認禁用頁眉頁腳: 打印時默認不顯示頁眉頁腳。
  2. 使用@media print自定義頁眉頁腳: 使用@media print樣式規則自定義頁眉頁腳內容,但此方法在使用printJS插件時無效。

用戶提供的代碼片段如下:

html2canvas(this.$refs.templateToImg, {   backgroundColor: null,   useCORS: true,   windowHeight: document.body.scrollHeight, }).then(canvas => {   dom.style.height = 'calc(100vh - 400px)'   dom.style.overflow = 'auto'   const url = canvas.toDataURL('image/jpg')   this.img = url   const styles = "@media print { @page {height: 100%;@top-left {content: '頁首內容';}@bottom-center {content: '頁腳內容';}}}"   printJS({     printable: url,     type: 'image',     documentTitle: this.previewTitle(),     style: styles,     onLoadingEnd: () => {       this.printLoading = false       dom.style.height = 'auto'       dom.style.overflow = 'visible'     }   }) })

解決方案與限制

關鍵在于理解以下幾點:

立即學習Java免費學習筆記(深入)”;

  1. 瀏覽器打印設置的不可控性: 瀏覽器打印設置(包括頁眉頁腳)由瀏覽器本身或操作系統控制,JavaScript和CSS無法直接干預。
  2. @media print的局限性: @media print可控制打印樣式,但不能直接修改瀏覽器打印設置。printJS插件可能忽略通過@media print設置的樣式。
  3. printJS插件的特性: printJS主要用于打印HTML內容或圖片,不支持直接修改瀏覽器打印設置。 代碼中嘗試通過style參數傳遞@media print樣式,但在printJS中效果不佳。

因此,結論是:JavaScript和CSS無法直接控制瀏覽器打印設置的頁眉頁腳選項。 這屬于瀏覽器和操作系統的權限范圍。

要自定義頁眉頁腳,只能在打印內容中直接添加這些元素,并確保它們在打印時可見且不受打印插件影響。 開發者需要放棄直接控制瀏覽器打印設置的想法,轉而關注在打印內容本身中實現頁眉頁腳的定制。

以上就是如何通過JavaScript或CSS控制

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享