国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue 打印html <iframe>標(biāo)簽(內(nèi)容打?。┏敿?xì)

這篇具有很好參考價(jià)值的文章主要介紹了vue 打印html <iframe>標(biāo)簽(內(nèi)容打?。┏敿?xì)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

今天領(lǐng)導(dǎo)給了個(gè)需求,需要配合其他項(xiàng)目組給一個(gè)公共組件的npm進(jìn)行,公共組件打印,打印操作由這個(gè)npm包來操作。(經(jīng)過開會(huì)商討,最后決定配置一個(gè)path路徑,來展示頁面,然后我負(fù)責(zé)在公共這里打印相應(yīng)頁面內(nèi)容。)在這之初都是好著的,首先進(jìn)行配置,這里只需要一個(gè)input框來給后端傳值就可以了,這一步?jīng)]什么好講的,

正傳

好了 正頭戲開始了,通過請(qǐng)求在mounted中發(fā)送請(qǐng)求,獲取到配置好的 path路徑,開始我想著用路由進(jìn)行編寫后來發(fā)現(xiàn)過于麻煩,選擇了iframe標(biāo)簽來進(jìn)行編寫,(這里再說一下留下來的需求,需要彈窗然后展示其他組要展示的內(nèi)容)這里選擇了iframe ,然而iframe的src值如果不是本項(xiàng)目頁面的話 是會(huì)報(bào)跨域的,so(幸好我們是同一個(gè)域名同一個(gè)端口號(hào)) 這里我對(duì)src 路徑的最前面的地址進(jìn)行處理,編寫一個(gè) 獲取域名以及端口號(hào)等的一個(gè)過濾方法,方法如下:

 // 獲取http域名
  urlhttp() {
  console.log(window.location.href, "window.location.href");
   // 截取域名前面的部分
  const url = window.location.href.split("://")[1];
  const urlhttp = window.location.href.split("://")[0];
  const urlArr = url.split("/");
  const urlStr = urlArr[0];
  const urlStrArr = urlStr.split(".");
  const urlStrArrLen = urlStrArr.length;
  const urlStrArrLenLast = urlStrArrLen - 1;
  const urlStrArrLenLastStr = urlStrArr[urlStrArrLenLast];
  const urlStrArrLenLastStrLen = urlStrArrLenLastStr.length;
  const urlStrArrLenLastStrLenLast = urlStrArrLenLastStrLen - 1;
  const urlStrArrLenLastStrLenLastStr = urlStrArrLenLastStr[urlStrArrLenLastStrLenLast];
  const urlStrArrLenLastStrLenLastStrNum = Number(urlStrArrLenLastStrLenLastStr);
  if (urlStrArrLenLastStrLenLastStrNum) {
    this.urlStr = urlStrArr[urlStrArrLenLastStrLenLastStrNum];
  } else {
    this.urlStr = urlStrArr[urlStrArrLenLastStrLenLastStr];
  }
  console.log(urlhttp + urlStr, "urlStr");

  // 截取域名帶http+域名
  this.urlhttpStr = urlhttp + "://" + urlStr;
  console.log(this.urlhttpStr, "urlhttpStr");
},

通過次方法,對(duì)頁面域名進(jìn)行格式化,其中window.location.href 獲取的是當(dāng)前地址框的所有地址,然后通過.split(" : / / " )[1];等進(jìn)行數(shù)據(jù)的獲取,最終得到:http://localhost:8080 這種地址,
從而拼接起來我配置的 iframe的src地址拼接后,彈窗展示了相應(yīng)的頁面,

然后在彈窗上給一個(gè)打印按鈕(重頭戲來了) 我先對(duì)iframe標(biāo)簽進(jìn)行ref的設(shè)置,從而獲取該節(jié)點(diǎn),然后我將

const contentWindow = iframe.contentWindow.document;

節(jié)點(diǎn)進(jìn)行賦值,拿到后直接打印該節(jié)點(diǎn),
調(diào)用 contentWindow.print(); 方法,發(fā)現(xiàn)打印信息不全的情況,然后我通過翻閱資料方得知 會(huì)有樣式排版等一些問題導(dǎo)致至此,所以次方法pass,過,后又發(fā)現(xiàn)可以通過創(chuàng)建新的頁面進(jìn)行展示打印,然后我調(diào)用

  const printWindow = window.open("", "_blank");
   printWindow.document.write(`
<html>
<body>
</body>
</html>
`);

去創(chuàng)建新頁面,在新頁面中執(zhí)行打印方法

printWindow.document.close();
printWindow.print();

然后發(fā)現(xiàn)打印后,我iframe中的打印的東西消失了,然后我便復(fù)制一個(gè)子節(jié)點(diǎn)然后再用子節(jié)點(diǎn)打印

const childElementcopy = childElement.cloneNode(true); // 復(fù)制元素

發(fā)現(xiàn)奏效了,但是沒有css樣式,我開始便利子節(jié)點(diǎn)的樣式

	Array.from(sourceComputedStyle).forEach(style => {
const value = sourceComputedStyle.getPropertyValue(style);
printElement.style.setProperty(style, value);
});

但是次方法未奏效,嘗試了好多辦法后,我查看元素時(shí)候發(fā)現(xiàn) style標(biāo)簽我可以直接copy旗下所有元素啊 然后便復(fù)制了一份,一起加入打印的新頁面,至此完成次需求,下面是全部代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-553884.html

  async submitPrint() {
  const iframe = this.$refs.myIframe;
  console.log(this.$refs.myIframe, "this.$refs.myIframe");
  const contentWindow = iframe.contentWindow.document;
  const head =  contentWindow.querySelector("head")
  // 訪問iframe的子元素
  const childElement = contentWindow.getElementById(this.printLocation) || contentWindow.getElementsByClassName(this.printLocation)[0]
  //this.printLocation是我后配置的要打印模塊的id
  console.log(childElement);
  const childElementcopy = childElement.cloneNode(true); // 復(fù)制html元素
  const headcopy = head.cloneNode(true); // 復(fù)制css 樣式元素元素

  const printWindow = window.open("", "_blank");
  // 在前確保先監(jiān)聽
  printWindow.document.write(`
  <html>
  <body>
  </body>
  </html>
	`);
      const printBody = printWindow.document.querySelector("body");
      const printhead = printWindow.document.querySelector("html");
      printhead.appendChild(headcopy);
      printBody.appendChild(childElementcopy);

  printWindow.onafterprint = function() {
    // 在打印對(duì)話框關(guān)閉后執(zhí)行的邏輯
    console.log("打印對(duì)話框已關(guān)閉");

    // 判斷用戶是否點(diǎn)擊了取消按鈕
    var printResult = window.matchMedia("print");
    if (printResult.matches) {
      console.log("用戶點(diǎn)擊了取消按鈕");
      // 執(zhí)行取消打印的相關(guān)邏輯
      printWindow.close(); // 關(guān)閉新頁面
    } else {
      console.log("用戶點(diǎn)擊了打印按鈕");
      // 執(zhí)行打印操作的相關(guān)邏輯
      printWindow.close(); // 關(guān)閉新頁面
    }
  };

  setTimeout(() => {
    printWindow.document.close();
    printWindow.print();
  }, 500);
  // const printBody = printWindow.document.querySelector('body');
  // const printhead = printWindow.document.querySelector('html');
  // printhead.appendChild(headcopy);
  // printBody.appendChild(childElementcopy);

  // printWindow.document.close();
  // printWindow.print();

  // 監(jiān)聽新窗口的onload事件,在加載完成后執(zhí)行打印操作



},

對(duì)你有幫助的話請(qǐng)點(diǎn)贊收藏,你的鼓勵(lì)我會(huì)收到的

到了這里,關(guān)于vue 打印html <iframe>標(biāo)簽(內(nèi)容打?。┏敿?xì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Vue】Vue 使用 Print.js 打印選中區(qū)域的html,用到的是Element ui table表格,解決頁面樣式不出現(xiàn)或者table表格樣式錯(cuò)亂問題?。?!

    【Vue】Vue 使用 Print.js 打印選中區(qū)域的html,用到的是Element ui table表格,解決頁面樣式不出現(xiàn)或者table表格樣式錯(cuò)亂問題?。?!

    需求 : 打擊打印按鈕,文字內(nèi)容以及表格中的內(nèi)容 解決方案 加上這句就好了!完美! 一、因?yàn)楸砀駭?shù)據(jù)過多,之前加了表格滾動(dòng)條,但是打印出來 會(huì)把表格上的滾動(dòng)條也打印出來,所以這里改成了 給彈框加滾動(dòng)條,去掉表格中的滾動(dòng)條 2.1 原因: table-layout: fixed導(dǎo)致的,

    2024年02月09日
    瀏覽(22)
  • 【Vue】 在 vue 中使用 iframe 掛載 html 文件

    【Vue】 在 vue 中使用 iframe 掛載 html 文件

    首先需要將要掛載的 html 文件放到 public 文件夾中 路徑的引用形式 通過綁定 ref 獲取到 iframe,data為我需要傳遞的數(shù)據(jù),通過 iframes.postMessage 的方法進(jìn)行傳遞。 postMessage 通信具體用法請(qǐng)參考:https://blog.csdn.net/qq_45677671/article/details/128238860

    2024年02月17日
    瀏覽(21)
  • 2023年最新前端面試題匯總大全(含答案超詳細(xì),HTML,JS,CSS匯總篇)-- 持續(xù)更新

    2023年最新前端面試題匯總大全(含答案超詳細(xì),HTML,JS,CSS匯總篇)-- 持續(xù)更新

    專項(xiàng)練習(xí)–持續(xù)更新 HTML篇 CSS篇 JS篇 Vue篇 TypeScript篇 React篇 微信小程序篇 前端面試題匯總大全二(含答案超詳細(xì),Vue,TypeScript,React,微信小程序,Webpack 匯總篇)-- 持續(xù)更新 1.xhtml和html有什么區(qū)別 功能上 主要是 XHTML 可兼容各大瀏覽器、手機(jī)以及 PDA ,并且瀏覽器也能快速

    2024年02月12日
    瀏覽(38)
  • web前端大作業(yè)_Html5+CSS3+JS原生項(xiàng)目_京東商城首頁 詳細(xì)代碼

    web前端大作業(yè)_Html5+CSS3+JS原生項(xiàng)目_京東商城首頁 詳細(xì)代碼

    index.html css index.css js index.js 效果圖如下: ? ? ? ? ? ?

    2024年02月11日
    瀏覽(26)
  • 【HTML】標(biāo)簽讀取富文本編輯器的內(nèi)容

    【HTML】標(biāo)簽讀取富文本編輯器的內(nèi)容

    1.正確讀取富文本內(nèi)容示例: 代碼: ?顯示結(jié)果: ?在這個(gè)例子中, {$row.content} ?是直接輸出從數(shù)據(jù)庫中獲取的富文本內(nèi)容,包括可能存在的HTML標(biāo)簽和屬性,這樣可以確保富文本能夠按照預(yù)期樣式呈現(xiàn)。 2. 錯(cuò)誤讀取富文本內(nèi)容示例及其原因分析: ?代碼: ?顯示結(jié)果: 分析

    2024年02月02日
    瀏覽(38)
  • vue項(xiàng)目關(guān)于iframe嵌套的頁面,在切換tab標(biāo)簽時(shí)會(huì)被重新刷新的問題處理方案

    這兩天工作中遇到一個(gè)這樣的需求,切換tab標(biāo)簽時(shí),要求對(duì)應(yīng)的tab頁面不刷新,但是項(xiàng)目中加入了一部分含有iframe的頁面,在切換路由的過程中,如果使用keep-alive是達(dá)不到緩存ifram嵌套的頁面效果的。 vue中的keep-alive 1.原理:vue 的緩存機(jī)制并 不是直接存儲(chǔ) DOM 結(jié)構(gòu) ,而是將

    2024年02月04日
    瀏覽(59)
  • 最詳細(xì)!?。∏岸嗽窆倬W(wǎng) (采用html+css+js+dom+ajax+jquery+swiper+json)完整版

    最詳細(xì)?。?!前端原神官網(wǎng) (采用html+css+js+dom+ajax+jquery+swiper+json)完整版

    1.該項(xiàng)目采用了大部分前端知識(shí), 完整的復(fù)刻原神官網(wǎng)上所顯示的全內(nèi)容 ,非常全面和詳細(xì)。希望有興趣的小伙伴萌可以看看和參考一下?。?!該項(xiàng)目可以作為大學(xué)生 畢設(shè)項(xiàng)目(附帶項(xiàng)目答辯ppt) 同時(shí)也可以作為計(jì)算機(jī)專業(yè)的小伙伴的 期末大作業(yè) 。喜歡的請(qǐng)留下你的足跡

    2024年02月05日
    瀏覽(87)
  • vue-codemirror實(shí)現(xiàn)一個(gè)前端代碼在線編輯器,可處理 HTML,VUE,JS,CSS代碼在線編輯

    vue-codemirror實(shí)現(xiàn)一個(gè)前端代碼在線編輯器,可處理 HTML,VUE,JS,CSS代碼在線編輯

    先找個(gè)目錄創(chuàng)建一個(gè)vue項(xiàng)目 例如 我們想要項(xiàng)目叫 editor 在終端執(zhí)行 2和3其實(shí)都可以 但個(gè)人建議 最近還是2會(huì)更穩(wěn)定一些 在終端執(zhí)行 引入依賴包 然后在項(xiàng)目src目錄下創(chuàng)建 utils 文件夾 里面創(chuàng)建一個(gè)setting.js 參考代碼如下 然后 這邊 調(diào)用組件的代碼 因?yàn)轫?xiàng)目也剛創(chuàng) 我直接寫 s

    2024年02月15日
    瀏覽(32)
  • Python爬蟲——BeautifulSoup,獲取HTML中文檔,標(biāo)簽等內(nèi)容

    Python爬蟲——BeautifulSoup,獲取HTML中文檔,標(biāo)簽等內(nèi)容

    將復(fù)雜的HTML文檔轉(zhuǎn)換成一個(gè)復(fù)雜的樹形結(jié)構(gòu),每個(gè)結(jié)點(diǎn)都是一個(gè)Python對(duì)象,所有對(duì)象可以分為四種: Tag NavigableString BeautifulSoup Comment 首先要引入該函數(shù),再打開相應(yīng)的html文件讀取其中的內(nèi)容,在使用BeautiSoup對(duì)其進(jìn)行解析,解析的時(shí)候要使用相應(yīng)類型的解析器html.parser bs當(dāng)中

    2024年02月06日
    瀏覽(28)
  • 4.正則提取html中的img標(biāo)簽的src內(nèi)容

    4.正則提取html中的img標(biāo)簽的src內(nèi)容

    我們以百度貼吧的1吧舉例 目錄 1??把網(wǎng)頁搞下來 2??收集url 3??處理url 4??空的src 5??容錯(cuò) 6??不使用數(shù)字作為文件名 7??并不是所有的圖片都用img標(biāo)簽表示 8??img標(biāo)簽中src請(qǐng)求下來不一定正確 9??分頁 ? 搞下來之后,雙擊打開是這樣的 我們實(shí)際拿的就是 img標(biāo)簽中src的內(nèi)

    2024年02月09日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包