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

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

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

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

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

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

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

1.安裝依賴:

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()

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

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

實(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ù)雜頁面渲染可能有差異

2.方案二:getDisplayMedia

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

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

總結(jié)

到此這篇關(guān)于js實(shí)現(xiàn)網(wǎng)頁截圖的文章就介紹到這了,更多相關(guān)js網(wǎng)頁截圖內(nèi)容請搜索腳本之家以前的文章或繼續(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)的類型實(shí)現(xiàn)不同操作系統(tǒng)下的兼容性

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

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

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

    這篇文章主要介紹了JavaScript通過代碼調(diào)用Flash顯示的方法,實(shí)例分析了JavaScript通過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)聽某一個(gè)主題對(duì)象,當(dāng)一個(gè)對(duì)象發(fā)生改變時(shí),所有依賴于它的對(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選擇完之后消息框不消失的問題

    解決layer.confirm選擇完之后消息框不消失的問題

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

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

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

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

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

    PHP7新特性簡述

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

    npm qs模塊使用詳解

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

最新評(píng)論

辰溪县| 巩义市| 罗定市| 衡山县| 米脂县| 通州区| 威远县| 石城县| 昆山市| 志丹县| 江安县| 株洲市| 舞阳县| 遂平县| 新营市| 汶上县| 布尔津县| 乾安县| 奇台县| 长乐市| 隆子县| 平顶山市| 浠水县| 榆树市| 莱州市| 鹿邑县| 赤峰市| 福州市| 瑞昌市| 云霄县| 高要市| 富顺县| 慈利县| 额济纳旗| 乌什县| 英吉沙县| 通榆县| 治多县| 富民县| 玛曲县| 健康|