最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js實(shí)現(xiàn)網(wǎng)頁(yè)截圖的兩種方案詳析

 更新時(shí)間:2025年06月16日 10:40:17   作者:樹(shù)上的  
在Web開(kāi)發(fā)中,實(shí)現(xiàn)網(wǎng)頁(yè)截圖功能可以幫助我們保存網(wǎng)頁(yè)內(nèi)容、生成海報(bào)、制作截圖分享等,這篇文章主要介紹了js實(shí)現(xiàn)網(wǎng)頁(yè)截圖的兩種方案,需要的朋友可以參考下

方案一:使用 html2canvas 庫(kù)(推薦)

原理:將 HTML DOM 元素轉(zhuǎn)換為 Canvas,再導(dǎo)出為圖片

特點(diǎn):兼容性好,支持大部分現(xiàn)代瀏覽器,但需注意 CSS 屬性兼容性

實(shí)現(xiàn)步驟:

1.安裝依賴(lài):

npm install html2canvas

2.基礎(chǔ)截圖代碼:

import html2canvas from "html2canvas"

//截取整個(gè)屏幕
 const screenFn = () => {
    const element = document.body
    html2canvas(element).then((canvas) => {
        const imgUrl = canvas.toDataURL("image/png")
        const link = document.createElement("a")
        link.download = "screenshot.png"
        link.href = imgUrl
        link.click()
    })
 }

//截取特定元素
const screenFn = () => {
    const element = document.getElementById("version")
    if (element) {
        html2canvas(element, {
          allowTaint: true, // 允許跨域圖片
          useCORS: true, // 使用 CORS 加載圖片
          scale: 2, // 提升截圖分辨率
          logging: true, // 調(diào)試時(shí)查看日志
          scrollY: -window.scrollY // 處理滾動(dòng)位置
        }).then((canvas) => {
          const imgUrl = canvas.toDataURL("image/png")
          const link = document.createElement("a")
          link.download = "screenshot.png"
          link.href = imgUrl
          link.click()
        })
    }
}

方案二: 使用原生 API Window: getDisplayMedia()

原理:通過(guò)屏幕共享 API 捕獲當(dāng)前標(biāo)簽頁(yè)

特點(diǎn):需用戶(hù)授權(quán),適合需要交互式操作的場(chǎng)景

實(shí)現(xiàn)步驟:

const screenFn = async () => {
    try {
        const stream = await navigator.mediaDevices.getDisplayMedia({
          video: { displaySurface: "browser" }
        })
        const videoTrack = stream.getVideoTracks()[0]
        const imageCapture = new ImageCapture(videoTrack)
        const bitmap = await imageCapture.grabFrame()

        // 將 bitmap 繪制到 canvas
        const canvas = document.createElement("canvas")
        canvas.width = bitmap.width
        canvas.height = bitmap.height
        const ctx = canvas.getContext("2d")
        ctx.drawImage(bitmap, 0, 0)

        // 導(dǎo)出圖片
        canvas.toBlob((blob) => {
          const url = URL.createObjectURL(blob)
          const a = document.createElement("a")
          a.href = url
          a.download = "screenshot.png"
          a.click()
        }, "image/png")

        videoTrack.stop()
    } catch (err) {
        console.error("截圖失敗:", err)
    }
}

兩種方案優(yōu)缺點(diǎn):

1.方案一:html2canvas

優(yōu)點(diǎn):純前端實(shí)現(xiàn),靈活度高

缺點(diǎn):復(fù)雜頁(yè)面渲染可能有差異

2.方案二:getDisplayMedia

優(yōu)點(diǎn):原生 API,無(wú)需額外依賴(lài)

缺點(diǎn):需要用戶(hù)手動(dòng)選擇分享區(qū)域

總結(jié)

到此這篇關(guān)于js實(shí)現(xiàn)網(wǎng)頁(yè)截圖的文章就介紹到這了,更多相關(guān)js網(wǎng)頁(yè)截圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JS使用ajax方法獲取指定url的head信息中指定字段值的方法

    JS使用ajax方法獲取指定url的head信息中指定字段值的方法

    這篇文章主要介紹了JS使用ajax方法獲取指定url的head信息中指定字段值的方法,實(shí)例分析了Ajax操作URL中head信息的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • 利用Javascript判斷操作系統(tǒng)的類(lèi)型實(shí)現(xiàn)不同操作系統(tǒng)下的兼容性

    利用Javascript判斷操作系統(tǒng)的類(lèi)型實(shí)現(xiàn)不同操作系統(tǒng)下的兼容性

    在通過(guò)Javascript實(shí)現(xiàn)客戶(hù)端和服務(wù)端的交互時(shí),有時(shí)候需要對(duì)操作系統(tǒng)進(jìn)行判斷,以便實(shí)現(xiàn)不同操作系統(tǒng)下的兼容性;從而實(shí)現(xiàn)網(wǎng)站在跨平臺(tái)瀏覽時(shí)候保持良好的用戶(hù)體驗(yàn),感興趣的朋友可以了解下啊,或許對(duì)你有所幫助
    2013-01-01
  • JavaScript通過(guò)代碼調(diào)用Flash顯示的方法

    JavaScript通過(guò)代碼調(diào)用Flash顯示的方法

    這篇文章主要介紹了JavaScript通過(guò)代碼調(diào)用Flash顯示的方法,實(shí)例分析了JavaScript通過(guò)flash插件swfobject.js調(diào)用flash顯示的具體操作技巧,需要的朋友可以參考下
    2016-02-02
  • Javascript設(shè)計(jì)模式之發(fā)布訂閱模式

    Javascript設(shè)計(jì)模式之發(fā)布訂閱模式

    發(fā)布---訂閱模式又叫觀察者模式,它定義了對(duì)象間的一種一對(duì)多的關(guān)系,讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽(tīng)某一個(gè)主題對(duì)象,當(dāng)一個(gè)對(duì)象發(fā)生改變時(shí),所有依賴(lài)于它的對(duì)象都將得到通知
    2022-12-12
  • Js實(shí)現(xiàn)滾動(dòng)變色的文字效果

    Js實(shí)現(xiàn)滾動(dòng)變色的文字效果

    滾動(dòng)變色的文字js特效,可看到文字在交替變色顯示,以吸引人的注意,效果真心不錯(cuò)哦,需要的朋友可以參考下
    2014-06-06
  • 解決layer.confirm選擇完之后消息框不消失的問(wèn)題

    解決layer.confirm選擇完之后消息框不消失的問(wèn)題

    今天小編就為大家分享一篇解決layer.confirm選擇完之后消息框不消失的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-09-09
  • js字符串操作方法實(shí)例分析

    js字符串操作方法實(shí)例分析

    這篇文章主要介紹了js字符串操作方法,實(shí)例分析了javascript中slice、substr及substring等方法的使用技巧,需要的朋友可以參考下
    2015-05-05
  • 刪除條目時(shí)彈出的確認(rèn)對(duì)話(huà)框

    刪除條目時(shí)彈出的確認(rèn)對(duì)話(huà)框

    這篇文章主要介紹用js的confirm實(shí)現(xiàn)的刪除條目時(shí)彈出的確認(rèn)對(duì)話(huà)框,詢(xún)問(wèn)是否要?jiǎng)h除這條記錄,需要的朋友可以參考下
    2014-06-06
  • PHP7新特性簡(jiǎn)述

    PHP7新特性簡(jiǎn)述

    本文通過(guò)實(shí)例給大家介紹了PHP7新特性的相關(guān)知識(shí),需要的朋友參考下吧
    2017-06-06
  • npm qs模塊使用詳解

    npm qs模塊使用詳解

    這篇文章主要介紹了npm qs模塊使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02

最新評(píng)論

永平县| 桂阳县| 浠水县| 郴州市| 和静县| 天等县| 兴业县| 阳西县| 德清县| 山阴县| 封丘县| 凉山| 曲水县| 斗六市| 汝城县| 建宁县| 庄河市| 新化县| 承德县| 大悟县| 宜宾市| 阿图什市| 玛曲县| 林口县| 遵义县| 平利县| 濮阳市| 周口市| 华安县| 苍梧县| 湘潭县| 社旗县| 安乡县| 无棣县| 濮阳市| 绍兴县| 彩票| 稻城县| 彭泽县| 嘉善县| 屯门区|