在Chrome扩展程序中,是否可以截屏并在弹出窗口中显示屏幕
In Chrome extensions, is it possible to screencapture and display the screen on the popup window?
我正在尝试构建一个chrome扩展程序,该扩展程序可以使用chrome.desktopCapture.chooseDesktopMedia
记录当前选项卡并将录制内容流式传输到default_popup文件。
目前,我正在内容脚本中获取流的对象 url,将其传递给后台脚本以进行一些检查,然后将其再次传递给弹出窗口.js这是我弹出窗口的 javascript 文件。 在页面的 DOM 上播放时,流可以工作并显示为视频,对象传递也没有问题。
但似乎对象URL无法从弹出窗口访问视频! 有什么办法解决这个问题吗?
这是我在检查弹出窗口的控制台时遇到的错误:
blob:https%3A//developer.chrome.com/5363c96d-69ff-4e91-8d06-48f1648ad0e4 加载资源失败:服务器响应状态为 404(未找到)
我刚刚发现了如何做到这一点。
若要在 Chrome 扩展程序中跨脚本和标签页传输 Blob 网址,必须先发送 XMLHTTP 请求,以从在其他脚本上创建的原始 Blob 网址中获取 Blob。 ,然后在当前页上从该 Blob 重新创建 Blob URL。
例如
//originalURL is the bloburl from your content script
//in your popup script, call this
var request=new XMLHttpRequest();
request.open('GET', originalURL);
request.responseType='blob';
request.send();
request.onload=function(){
var newURL=URL.createObjectURL(request.response);
}
//newURL is the bloburl which can not be used on your popup script, you can set it as the soure of a video etc...
我希望这对某人有所帮助!
感谢您@jasonY提供有效的解决方案。就我而言,我需要将 ObjectURL 从后台脚本发送到内容脚本。
async function reissueObjectURL (url) {
return new Promise((resolve, reject) => {
var request = new XMLHttpRequest();
request.open('GET', url);
request.responseType = 'blob';
request.onload = () => {
resolve(URL.createObjectURL(request.response));
URL.revokeObjectURL(url);
};
request.send();
});
}
相关文章:
- 如何打开/移动主屏幕左侧的浏览器窗口
- 将第二窗口移动到第二屏幕或特定屏幕
- 在屏幕中间打开一个弹出窗口
- 如何在同一浏览器屏幕中创建多个窗口
- 如何将弹出窗口居中显示在屏幕上
- HTA应用程序:将窗口放在屏幕的右下角
- 在Chrome扩展程序中,是否可以截屏并在弹出窗口中显示屏幕
- 从chrome扩展打开的窗口捕获活动面板中的屏幕
- 我可以修复手机相对于屏幕的背景吗?(注意:不是窗口)
- 更改宽度,使高度适合窗口屏幕
- 您可以捕获弹出窗口并将其加载到父/打开器屏幕中吗?
- 根据当前屏幕窗口大小设置模式窗口的最大高度
- 当模态有时大于屏幕时,我如何水平/垂直居中模式弹出窗口
- 在移动屏幕中从纵向移动到横向并返回纵向时,窗口元素在垂直方向上变得不可见
- 除了屏幕之外,CSS 值是否有任何方法响应窗口宽度@media
- 窗口大小屏幕的条件
- Javascript :在屏幕中央打开弹出窗口(Chrome)
- 弹出窗口需要以屏幕为中心
- 需要一个动态的iframe,调整内容和响应设备屏幕/窗口大小
- CSS:如何根据屏幕/窗口大小设置宽度和高度