精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何應對Chrome 112版本中的getDisplayMedia問題?

系統 瀏覽器
當我在瀏覽器中調試修復截圖插件的其他bug時,發現截取的內容出現了滾動條,這讓我感到非常詫異。難道是我在解決某個問題的同時引發了更多問題。

前言

前幾天chrome發布了112版本,原本可以通過getDisplayMedia正確的獲取當前標簽頁的內容,在此版本中卻出現了內容擠壓、概率性出現滾動條問題。

經過一番思考后,我想到了兩個處理方案,本文就跟大家分享下我的思路,歡迎各位感興趣的開發者閱讀本文。

定位問題

當我在瀏覽器中調試修復截圖插件的其他bug時,發現截取的內容出現了滾動條,這讓我感到非常詫異。難道是我在解決某個問題的同時引發了更多問題。于是,我嘗試回退代碼版本,但問題仍然存在,這使我陷入了沉思,開始求助別人、在搜索引擎尋找解決方案。

經過一番折騰后,我沒有得到任何答案。就在這時,有一個開發者在給我提了issue,他也遇到了同樣的問題。

圖片

他提供了瀏覽器版本號,這讓我恍然大悟,不久前我升級了瀏覽器版本并且版本號跟他的一樣,同為112版本。

圖片

為了驗證是否為瀏覽器升級所帶來的bug,我在虛擬機中安裝了110版本的chrome,發現這個問題確實不存在。難不成是Google改了API?我帶著這個疑問翻閱了getDisplayMedia的API文檔,并沒有發現有什么特殊說明。

事情陷入了僵局,我又陷入了沉思。突然間,我想起來之前有個網友說Google自家也有產品用到了這個API,找他要來了網址。

圖片

果然,他們產品也出現了問題。

圖片

截取后的內容出現了擠壓和滾動條

圖片

解決方案

Chrome在下個版本的更新中可能會解決此問題,也有可能不會解決。這是個未知數,我還是得想想其他辦法來處理處理這個問題。

隱藏滾動條并填充擠壓區域

最簡單粗暴的辦法就是在調用getDisplayMedia方法之前將頁面的寬、高分別設為100vw、100vh,給html和body元素設置overflow:hidden。部分代碼如下所示:

// 設置頁面寬高并隱藏滾動條
document.documentElement.classList.add("hidden-screen-shot-scroll");
document.body.classList.add("hidden-screen-shot-scroll");
.hidden-screen-shot-scroll {
  width: 100vw;
  height: 100vh;
  overflow: hidden;
}

這樣設置后,又出現了新的問題,因為截圖容器的高度為body區域未擠壓時的正確高度,webrtc的共享彈窗會把頁面內容整體擠下去。

圖片

getDisplayMedia的回調里拿到的屏幕流數據是擠壓后的,底部會缺少一部分,這部分內容正好是共享彈窗的高度。當用戶想截取這部分的內容時,會發現拿到的是透明的。

圖片

為了解決這個問題,我想到了將這一部分用其他顏色填充,告訴用戶這部分不是截圖內容,部分代碼如下所示:

if (
    this.hiddenScrollBar.state &&
    diffHeight > 0 &&
    this.hiddenScrollBar.fillState
) {
    // 填充容器的剩余部分
    imgContext.beginPath();
    let fillWidth = containerWidth;
    let fillHeight = diffHeight;
    if (this.hiddenScrollBar.fillWidth > 0) {
        fillWidth = this.hiddenScrollBar.fillWidth;
    }
    if (this.hiddenScrollBar.fillHeight > 0) {
        fillHeight = this.hiddenScrollBar.fillHeight;
    }
    imgContext.rect(0, fixHeight, fillWidth, fillHeight);
    imgContext.fillStyle = this.hiddenScrollBar.color;
    imgContext.fill();
}

使用窗口截圖模式

通過上個章節的分析,我們發現使用標簽頁截圖時出現擠壓的根本原因在于共享彈窗會出現在頁面的頂部。那么,有沒有什么辦法能做到不讓這個共享彈窗出現在最頂部呢?

帶著這個疑問,我在chrome的開發文檔中找到了displaySurface選項,將這個值設為window,它的共享彈窗就不會出現了。部分代碼如下所示:

let mediaWidth = window.screen.width * this.dpr;
let mediaHeight = window.screen.height * this.dpr;
navigator.mediaDevices.getDisplayMedia({
    audio: false,
    video: {
        width: mediaWidth,
        height: mediaHeight,
        displaySurface: "window"
    }
});

圖片

網頁標題欄會出現錄制圖標

圖片

但是,這樣子做我們拿到的是整個瀏覽器窗口的截圖,我們想要的是body區域的截圖內容。 因此,還需要對截圖內容做進一步的裁剪處理,我們可以知道瀏覽器窗口的寬高、body區域的寬高。那么,用瀏覽器窗口的寬高減去body區域的寬高,我們就拿到了body區域的裁剪坐標。部分代碼如下所示:

/**
   * 從窗口數據流中截取頁面body內容
   * @param videoWidth 窗口寬度
   * @param videoHeight 窗口高度
   * @param containerWidth body內容寬度
   * @param containerHeight body內容高度
   * @private
   */
  private getWindowContentData(
    videoWidth: number,
    videoHeight: number,
    containerWidth: number,
    containerHeight: number
  ) {
    const videoCanvas = document.createElement("canvas");
    videoCanvas.width = videoWidth;
    videoCanvas.height = videoHeight;
    const videoContext = getCanvas2dCtx(videoCanvas, videoWidth, videoHeight);
    if (videoContext) {
      videoContext.drawImage(this.videoController, 0, 0);
      const startX = 0;
      const startY = videoHeight - containerHeight;
      const width = containerWidth;
      const height = videoHeight - startY;
      // 獲取裁剪框區域圖片信息;
      return videoContext.getImageData(
        startX * this.dpr,
        startY * this.dpr,
        width * this.dpr,
        height * this.dpr
      );
    }
    return null;
  }

思考與分析

使用當前標簽頁進行截圖相對而言用戶體驗是最好的,但是因為chrome 112版本的bug會造成頁面內容擠壓導致截取到的內容不完整,因此只能采用其他方案來解決此問題了。窗口截圖模式和隱藏滾動條都可以解決這個問題,但是他們都有缺點:

  • 窗口截圖模式可以完美的獲取屏幕截圖,但是用戶授權時會出現其他的應用程序選項,用戶體驗會差一些。
  • 隱藏滾動條方案還是采用標簽頁截圖,但是會造成內容擠壓,底部出現空白。

這兩種方案都是不完美的,希望Chrome能在后續的版本更新中修復此問題。窗口模式截圖我有找過能否讓授權列表中只包含當前窗口選項,我在Chrome的開發文檔中找到了Google對此情況的解釋。

圖片

項目地址

本文所列舉的代碼完整內容請移步:

  • hiddenScrollBar-main.ts
  • wrcWindowMode-main.ts
  • getWindowContentData-main.ts
責任編輯:武曉燕 來源: 神奇的程序員
相關推薦

2011-05-18 09:23:00

Chrome OS

2017-03-21 11:42:29

Linux安裝Python 3.6

2012-11-16 09:50:32

Windbg

2023-06-26 07:47:09

2009-12-14 15:36:19

Visual Stud

2009-11-23 09:22:22

Chrome OSlinux內核

2009-12-14 13:22:50

VS2008版本

2021-09-23 16:47:12

Chrome谷歌瀏覽器

2015-07-27 16:48:57

PPT文檔

2010-06-08 09:45:27

openSUSE 11

2012-05-07 23:45:54

FantomJavaJVM

2012-03-06 13:45:43

JavaJActor

2025-10-16 09:37:11

2022-10-09 12:12:37

配置漂移

2020-12-16 10:42:21

人工智能智能建筑IoT

2010-09-27 12:42:15

JVM1.4.1JVM垃圾收集

2020-07-10 06:40:31

Python 3.9Python開發

2018-12-18 14:15:27

Windows 10語言版本錯誤

2010-08-26 17:08:20

vsftpd faq

2015-09-28 10:12:13

VDI虛擬化
點贊
收藏

51CTO技術棧公眾號

韩国成人精品a∨在线观看| 成人精品影视| 欧美性黄网官网| 日本精品国语自产拍在线观看| 精品无码一区二区三区的天堂| 欧美freesextv| 欧美mv日韩mv国产网站app| 色综合久久久久无码专区| av天在线观看| 福利电影一区二区三区| 日本久久久久亚洲中字幕| 国产黄在线免费观看| 菁菁伊人国产精品| 4438亚洲最大| 中文字幕无码精品亚洲35| 阿v免费在线观看| 国产suv精品一区二区883| 国产成人精品一区二区在线| 免费在线观看黄色av| 欧美亚洲国产精品久久| 亚洲精品一区二区三区四区高清| 亚洲成色www.777999| 顶级网黄在线播放| 国产欧美日韩视频在线观看| 国产麻豆乱码精品一区二区三区 | 五月天激情综合| 亚洲一区精彩视频| 欧美日韩伦理片| 成人sese在线| 亚洲综合成人婷婷小说| 亚洲av综合一区| 午夜亚洲性色福利视频| 欧美黄色小视频| 国产1区2区3区4区| 日韩中文欧美| 正在播放国产一区| 人人妻人人藻人人爽欧美一区| youjizz亚洲| 欧美一卡在线观看| 成人性生交视频免费观看| 天天综合网天天| 日韩欧美精品在线观看| 黄色网页免费在线观看| 爱情岛亚洲播放路线| 亚洲视频一区在线观看| 特级毛片在线免费观看| 午夜看片在线免费| 中文字幕欧美一| 一本一生久久a久久精品综合蜜 | 国产亚洲一区二区在线观看| 精品一区二区国产| 手机看片福利永久| 99在线精品观看| 九色综合婷婷综合| 色网站在线免费观看| 99久久er热在这里只有精品66| 国产精品毛片va一区二区三区| 亚洲风情第一页| 成人国产精品视频| 久久99精品久久久久久秒播放器 | 日产午夜精品一线二线三线| 在线电影av不卡网址| 正在播放国产对白害羞| 欧美高清视频在线观看mv| 日韩在线视频免费观看高清中文| 青青青视频在线播放| 无码一区二区三区视频| 久久成人精品一区二区三区| 国产a免费视频| 在线成人国产| 国产福利精品视频| 亚洲一区二区三区网站| 国产精品一区二区男女羞羞无遮挡| 亚洲aaa激情| 日韩一级在线播放| 国产亚洲综合色| 午夜久久久久久久久久久| 伦理av在线| 日韩欧美精品网址| 性欧美在线视频| 国产ts一区| 国产一区二区三区视频| 疯狂试爱三2浴室激情视频| 欧美成人首页| 日韩免费视频在线观看| 国产精品国产三级国产普通话对白 | 亚洲欧美黄色片| 2023国产精品| 黄瓜视频免费观看在线观看www| 午夜伦理大片视频在线观看| 欧美日韩视频在线| 亚洲免费成人在线视频| 欧美人与动xxxxz0oz| 中文字幕不卡av| 国产乡下妇女做爰毛片| 日韩av中文字幕一区二区三区 | 四虎影视精品| 久久精品一本久久99精品| 久久久精品视频免费| 日韩在线a电影| 国产乱子伦精品| 午夜在线视频| 欧美午夜美女看片| 亚欧美一区二区三区| 久久91精品| 欧美激情视频网址| 亚洲图片欧美在线| 2020国产精品自拍| 日本男女交配视频| 成人在线视频免费看| 亚洲福利在线播放| 国模无码国产精品视频| 日韩影院精彩在线| 国内一区在线| 羞羞视频在线观看不卡| 欧美性猛交一区二区三区精品 | 97视频一区| 色妞欧美日韩在线| 99久久精品国产亚洲| 高清不卡一区二区| 最近中文字幕免费mv| 国产成人三级| 6080日韩午夜伦伦午夜伦| 在线看黄色的网站| 国产精品久久久久久久久久10秀| 97超级碰碰人国产在线观看| 国产男男gay体育生白袜| 国产亚洲精品久| 国产视频一视频二| av综合网站| 欧美日韩国产999| 国产精品久久久国产盗摄| 久久影院电视剧免费观看| 日本a级片在线播放| 二区三区精品| 日韩中文字幕国产精品| 日韩熟女一区二区| 久久综合狠狠综合久久激情| 国产女主播自拍| 日韩欧美高清一区二区三区| 精品国产视频在线| 一级黄色片在线| 国产精品久久一卡二卡| 亚洲一区二区三区四区五区xx| 色婷婷av一区二区三区丝袜美腿| 性视频1819p久久| 人妻精品一区一区三区蜜桃91 | 免费一级肉体全黄毛片| 国产一二三精品| 亚洲欧美日韩不卡| 电影91久久久| 色综合老司机第九色激情| 国产男男gay网站| 亚洲免费伊人电影| 特种兵之深入敌后| 欧美激情性爽国产精品17p| 成人亲热视频网站| 97超碰资源站| 久久九九精品| 精品一区2区三区| 台湾佬中文娱乐网欧美电影| 亚洲成人动漫在线播放| 国产精久久久久久| 不卡一卡二卡三乱码免费网站| 日韩人妻无码精品久久久不卡| 国产区精品视频在线观看豆花| 久久久亚洲国产| 图片区 小说区 区 亚洲五月| 亚瑟在线精品视频| 亚洲午夜福利在线观看| 日本亚洲三级在线| 二级片在线观看| 国产日韩三级| 国产精品美女久久久久av超清| 日本黄色片在线观看| 欧美一级xxx| 日本在线视频中文字幕| 久久日一线二线三线suv| 成人黄色一区二区| 911精品美国片911久久久| 99中文视频在线| 伊人久久在线| www.色综合| 后入内射欧美99二区视频| 黑人狂躁日本妞一区二区三区| 国产肥白大熟妇bbbb视频| 久99久精品视频免费观看| 国产 国语对白 露脸| 神马久久av| 91免费版网站入口| 性爽视频在线| 久久影院免费观看| 日韩有码电影| 91精品国产综合久久福利软件| 国产成人亚洲欧洲在线| 国产精品三级av在线播放| 日本黄色大片在线观看| 快she精品国产999| 国产一区二区三区播放| 国产尤物久久久| 91嫩草免费看| 外国电影一区二区| 久久久欧美精品| 日本www在线观看视频| 亚洲精品xxxx| 国产成人精品亚洲精品色欲| 色综合久久久网| 国产女人18水真多毛片18精品| 91年精品国产| 美女久久久久久久久| 看电视剧不卡顿的网站| 久久久久久久久久久视频| 亚洲精品二区三区| 日韩电影大全在线观看| 久久大胆人体视频| 91在线观看网站| 另类一区二区| 奇米一区二区三区四区久久| 丝袜美女在线观看| www.99久久热国产日韩欧美.com| 视频午夜在线| 精品久久久久99| 国产视频一区二区三| 欧美亚洲动漫精品| www亚洲视频| 午夜精品一区二区三区电影天堂| 手机在线免费看毛片| 日本一区二区三级电影在线观看| avtt香蕉久久| 99在线热播精品免费| 任你躁av一区二区三区| 久久国产精品色婷婷| 亚洲狼人综合干| 石原莉奈在线亚洲二区| 欧美亚洲一二三区| 国产欧美日韩亚洲一区二区三区| 美女黄色免费看| 午夜精品视频| japanese在线播放| 亚洲有吗中文字幕| 400部精品国偷自产在线观看| 婷婷丁香综合| 欧美性受xxxx黑人猛交88| 日韩欧美精品| 一区二区三区久久网| 成人免费看片39| 在线视频一区观看| 我不卡伦不卡影院| 国产一级片91| 国语对白精品一区二区| 91动漫在线看| 国产日韩一区二区三区在线播放 | www.成人av.com| 爱高潮www亚洲精品| 国产精品有限公司| 先锋影音国产精品| 欧美日韩在线观看一区| 国产精品密蕾丝视频下载| 日本一区免费看| 日本久久综合| 国产精品一区在线免费观看| 五月天综合网站| av日韩在线看| 中文亚洲欧美| 久久久精品三级| 国产一区二区中文字幕| 香蕉视频在线观看黄| 波多野结衣亚洲一区| 毛茸茸多毛bbb毛多视频| 久久久综合精品| www亚洲色图| 亚洲精品自拍动漫在线| 日本熟女一区二区| 在线视频欧美区| 国产精品久久久久久久一区二区| 日韩欧美国产三级电影视频| 日韩在线视频观看免费| 亚洲一区二区国产| av中文字幕在线播放| 午夜精品在线视频| 免费污视频在线一区| 亚洲在线视频观看| 五月综合久久| av磁力番号网| 亚洲欧美不卡| 亚洲精品mv在线观看| 成人免费观看视频| 一级特黄曰皮片视频| 亚洲最大成人网4388xx| 久久精品久久久久久久| 欧美一区二区三区免费观看视频| 五月婷婷伊人网| xxxxx成人.com| 天堂av在线网| 91在线免费看网站| 国产一区二区欧美| 欧美一级免费播放| 麻豆精品视频在线观看视频| 国产精品麻豆入口| 亚洲特黄一级片| 无码人妻aⅴ一区二区三区有奶水| 欧美久久久久久蜜桃| 手机看片福利在线| 日韩在线观看视频免费| www在线看| 91久久精品在线| 欧美偷拍综合| 夫妻免费无码v看片| 国产老肥熟一区二区三区| 色噜噜日韩精品欧美一区二区| 亚洲一区二区视频在线观看| 中文天堂在线播放| 亚洲欧美另类中文字幕| 欧美xxxx性xxxxx高清| 国产精品视频地址| 九色精品91| 成熟丰满熟妇高潮xxxxx视频| 国产呦萝稀缺另类资源| 三区四区在线观看| 欧美特黄级在线| 色呦呦免费观看| 欧美激情视频一区二区| 国产成人久久精品一区二区三区| 日韩黄色影视| 中文高清一区| 日本少妇xxxx| 亚洲国产人成综合网站| www.com在线观看| 精品久久久av| 欧美大片网站| 亚洲一区二区不卡视频| 丝袜亚洲另类欧美综合| 91精品人妻一区二区三区蜜桃欧美| 亚洲一区二区偷拍精品| 日本三级理论片| 欧美精品久久久久久久多人混战| 日韩精品福利| 69av在线播放| 97久久亚洲| 久久99久久99精品| 成人在线视频一区二区| 久久免费视频精品| 欧美成人激情免费网| 在线观看操人| 成人91免费视频| 欧美日韩1080p| 免费在线观看日韩av| 亚洲一区二区三区国产| 性做久久久久久久| 欧美激情国产日韩精品一区18| 久久精品免视看国产成人| 天天操天天干天天玩| 国产成人在线免费观看| 国产一级一片免费播放放a| 精品国产伦理网| а√天堂8资源中文在线| 精品久久久久久乱码天堂| 一本色道久久综合亚洲精品高清| 一区二区三区少妇| 在线亚洲高清视频| 永久av在线| 91av免费看| 亚洲激情社区| 国产精品亚洲无码| 精品视频在线免费| av大全在线| 精品免费日产一区一区三区免费| 午夜在线精品偷拍| 一级片黄色录像| 日韩三级在线观看| 玖玖在线播放| 婷婷四月色综合| 国产成都精品91一区二区三| 国产一级特黄aaa大片| 日韩精品极品在线观看| 成人在线免费电影网站| 免费看黄色a级片| 91天堂素人约啪| 91亚洲精品国偷拍自产在线观看| 欧美国产极速在线| 亚洲+小说+欧美+激情+另类 | 国产黄a三级三级三级av在线看 | 国产精品影院在线| 国产一区欧美二区三区| 一区精品久久| av永久免费观看| 日韩免费观看高清完整版| 黑人精品一区| 好吊色视频988gao在线观看| 91在线视频网址| 91成人一区二区三区| 高清一区二区三区日本久| 菠萝蜜一区二区| 午夜不卡久久精品无码免费| 欧美在线不卡一区| 操喷在线视频| 99精品一级欧美片免费播放| 26uuu国产日韩综合| 国产日韩一级片| 国产精品成人免费电影|