添加displaySurface不会在共享自己的屏幕之前引起用户的选项限制。 我试图将这些选项限制为仅允许用户选择浏览器标签以外的任何内容。
我尝试将displaySurface显式设置为“显示器”,并且仍然显示所有选项。
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;
},
预期结果是显示“您的整个屏幕”或“应用程序窗口”,而不是“ Chrome选项卡”。
答案 0 :(得分:1)
不能。 MDN文档解释说,这是出于安全考虑:
约束永远不会导致可由Screen Sharing API捕获的源列表发生变化。这样可以确保Web应用程序通过限制源列表直到仅剩一项才可以强制用户共享特定内容。
spec说:
用户代理必须让最终用户每次都从所有可用选择中选择要共享的显示表面,并且不得使用约束来限制该选择。
因此,浏览器在做正确的事情。看来displaySurface
仅是一个输出值。如果您已有MediaStreamTrack
来调用getSettings()
,则可以阅读displaySurface。
我也很困惑,所以我修复了MDN文档。 MDN文档需要更新,以免将 displaySurface
列为“表示允许用户选择的屏幕表面类型的字符串(或字符串数组)”。