是否可以告诉浏览器不要从"getDisplayMedia"聚焦(置于前面)所选窗口?



我正在使用getDisplayMedia开发应用程序。当浏览器提示我共享我的屏幕/窗口并且我选择要共享的特定窗口时,该窗口现在突然聚焦并位于我的其他窗口前面(特别是在浏览器窗口的前面!我用Firefox和Chrome测试了这个,每个都在Ubuntu和Windows 10上。我使用此页面进行测试。

我个人觉得这种行为有点出乎意料和烦人。我还担心我的应用程序的技术倾向较低的用户会对此感到非常困惑。所以我希望浏览器即使在选择窗口后也能保持专注。是否有可能改变这种行为?我检查了getDisplayMedia上的MDN文档,但没有找到任何与此相关的内容。我在其他地方也没有找到任何有关这方面的信息。

如果无法调整这种行为,我想知道:为什么?是技术限制吗?是否是一项隐私/安全功能,让用户更清楚地知道此窗口现在已共享?(就我个人而言,我真的不认为它对用户有帮助,但没关系。

现在可以在共享选项卡内容或应用程序窗口时使用 CaptureController API 执行此操作。

截至目前,我无法防止在Chrome中共享"显示器"时失去焦点。在这种情况下,焦点将转移到"...正在共享您的屏幕[停止共享]隐藏"模式。

const controller = new CaptureController();
controller.setFocusBehavior("no-focus-change");
const mediaStreamOptions: DisplayMediaStreamOptions = {
// ...
controller
};
navigator.mediaDevices.getDisplayMedia(mediaStreamOptions)
.then(videoStream => {
const newVideoTrack = videoStream.getVideoTracks()[0];
setVideoTrack(newVideoTrack);
}).catch(console.error);

有关 API 及其用法的更多信息,请参阅此处:

  • https://developer.chrome.com/docs/web-platform/conditional-focus/
  • https://developer.mozilla.org/en-US/docs/Web/API/CaptureController
  • https://www.w3.org/TR/screen-capture/#capturecontroller

不,通常不可能更改此行为,因为它是有意为之的。

虽然此行为不是任何规范强制要求的,但如今大多数浏览器都会将刚刚共享的窗口推到前面。

基本原理是典型的用例是有人在网络电话会议中演示文档。在该上下文中,假设由于这是用户启动的操作(它需要用户手势(,因此用户打算与他们刚刚共享的图面进行交互。

过去,浏览器过去不这样做,用户对正在发生的事情以及共享哪个窗口感到困惑。

如果您有一个令人信服的用例,其中存在问题,请考虑在规范的新问题中对其进行描述。

最新更新