首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Chrome扩展中,是否可以在弹出窗口上显示屏幕?

在Chrome扩展中,是否可以在弹出窗口上显示屏幕?
EN

Stack Overflow用户
提问于 2015-03-14 18:30:07
回答 2查看 916关注 0票数 0

我正在尝试构建一个铬扩展名,它可以使用chrome.desktopCapture.chooseDesktopMedia记录当前选项卡,并将记录流到default_popup文件中。

目前,我在内容脚本中获取流的对象url,将其传递给后台脚本进行一些检查,然后再将其传递给popup.js,这是我弹出的javascript文件。当在页面的DOM上播放时,流会以视频的形式工作和显示,而对象的传递也没有问题。

但是objectURL似乎无法从弹出窗口访问视频!有办法绕过这件事吗?

这是我在检查弹出的控制台时遇到的错误:

blob:https%3A//developer.chrome.com/5363c96d-69ff-4e91-8d06-48f1648ad0e4未能加载资源:服务器响应状态为404 (未找到)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-20 02:59:44

我刚知道该怎么做。

为了在chrome扩展中的脚本和选项卡之间传输blob,您必须首先发送一个xmlhttp请求,以便从在另一个脚本上创建的原始blob url中获取blob。然后从当前页面上的blob重新创建blob url。

例如:

代码语言:javascript
运行
AI代码解释
复制
//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...

我希望这能帮上忙!

票数 1
EN

Stack Overflow用户

发布于 2017-06-30 05:02:07

谢谢你@jasonY的工作解决方案。在我的例子中,我需要从后台脚本发送一个ObjectURL到一个内容脚本。

代码语言:javascript
运行
AI代码解释
复制
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();
    });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29056607

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文