moh*_*bry 8 javascript google-chrome
在共享他自己的屏幕之前,添加 displaySurface 不会引起用户的选项限制。我试图将这些选项限制为仅让用户选择浏览器选项卡以外的任何内容。
我尝试将 displaySurface 显式设置为 'monitor' 并且仍然显示所有选项。
async startCaptureMD() {
let captureStream = null;
var screen_constraints = {
video: {
cursor: "always",
displaySurface: "monitor"
}
};
try{
captureStream = await
navigator.mediaDevices.getDisplayMedia(screen_constraints);
}catch(err){
console.log(err.message, err.code);
}
return captureStream;
},
Run Code Online (Sandbox Code Playgroud)
预期的结果是显示“您的整个屏幕”或“应用程序窗口”而不是“Chrome 选项卡”。
你不能。该MDN文档解释说,这是为了安全:
约束永远不会导致屏幕共享 API 可捕获的源列表发生更改。这确保了 Web 应用程序不能通过限制源列表直到只剩下一项来强制用户共享特定内容。
该规范说:
用户代理必须让最终用户每次从所有可用选项中选择要共享的显示表面,并且不得使用约束来限制该选择。
所以浏览器正在做正确的事情。似乎displaySurface只是一个输出值。如果你已经有了一个MediaStreamTrack调用getSettings(),那么你可以阅读 displaySurface。
我也很困惑,所以我修复了 MDN 文档。MDN 文档需要更新以不displaySurface列为“一个字符串(或字符串数组),指示允许用户选择的屏幕表面类型”。
| 归档时间: |
|
| 查看次数: |
2238 次 |
| 最近记录: |