技術的に実現不可能な機能の調査結果
このドキュメントは、過去に調査した結果、技術的に実現不可能と判明した機能についての記録である。新機能を検討する際に参照し、同じ調査を繰り返さないようにすること。
結論: ブラウザ拡張機能のサイドパネルにおいて、「ページ内クリック」を検出することは技術的に不可能である。
技術的理由:
window オブジェクトを持ち、ページ内のイベントは伝播しない検討した代替案と却下理由:
<all_urls>)によるセキュリティ・審査の問題採用した設計: サイドパネル内の空白クリックでのみ選択解除
SidePanelRoot.tsx の onClick で をチェック!target.closest('[data-tab-id]')関連ファイル: src/sidepanel/components/SidePanelRoot.tsx
結論: ブラウザ拡張機能において、ドラッグ&ドロップでウィンドウ間のタブ移動を実現することは技術的に不可能である。
調査結果:
OSレベルのマウスキャプチャ
mouseenter, mouseover, mousemoveなどのマウスイベントが一切発火しないpointerenter, pointermoveなども同様に発火しないsetPointerCapture()はdragstart後に呼び出しても機能しないHTML5 Drag and Drop APIの制限
dragenter, dragoverイベントは内部的には発火するが、Chrome拡張のサイドパネル間では検知できないdataTransferを使用した方法もサイドパネル間では機能しないpreventDefault()の無効性
dragstartイベントでpreventDefault()を呼んでも、マウスボタンを押したまま移動するとOSレベルのドラッグが開始されるVSCode/Electronの事例
代替実装:
参考資料: