桌機 App 原生截圖能力需求 — 一鍵截圖接宿主 API
由 崴立 分享的筆記
發生環境 桌機 App 網頁版正常 / 桌機失敗 錯誤訊息 Not supported 截圖失敗:Not supported 插件版本 1.4.2 我的插件 de910ca0… 結論 這不是插件 bug,是宿主能力缺口:Electron renderer 沒有實作 getDisplayMedia ,插件又被 validator 禁止碰 window.electronAPI ,沙箱內無路可走。 一、使用者要什麼 在「我的插件」設定打開「一鍵截圖」後,右下角出現相機懸浮鈕。點一下就把當前 App 畫面拍下來,自動存進檔案庫(檔名為截圖日期時間),並跳提示「已存進檔案庫」。全程一次點擊,不應每次都跳系統分享選窗。 二、現況與證據 環境 行為 結果 瀏覽器網頁版 getDisplayMedia 跳分享選窗 可截圖、可存檔 桌機 App getDisplayMedia 直接 throw 截圖失敗:Not supported,連選窗都不出現 使用者在桌機 App 實測錄影:按下相機鈕後直接顯示失敗提示。桌面 App 的 Chromium 對插件 iframe 拒絕螢幕分享,前端 canvas.toBlob 之前的取流步驟就已陣亡,後面的存檔流程根本跑不到。 三、為什麼插件自己修不好 宿主內部其實有路:旅途錄影用主行程 desktopCapturer 取 sourceId ,再用 getUserMedia({ chromeMediaSource: 'desktop' }) 取流,證明 Electron 端取得到自己視窗。 但這條路插件走不得:validator 明確禁止 window.electronAPI (host 內部 IPC,不在 plugin contract),帶 journeyRecorderSource 的版本直接被退回。 DOM 轉 canvas(html2canva…