以编程方式调用选项卡捕获引发异常
Programmatically invoke tab capture throws exception
我在 chrome 扩展名的内容脚本中定义了一个侦听器:
document.addEventListener("startRecording", function(data) {
chrome.runtime.sendMessage({'action' : 'captureCurrentTab'});
});
并在我的扩展中定义了一个函数.js:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.action == "captureCurrentTab"){
captureCurrentTab();
}
});
function captureCurrentTab() {
chrome.tabs.getSelected(null, function(tab) {
chrome.tabCapture.capture(MediaStreamConstraint, handleCapture);
});
}
var MediaStreamConstraint = {
//audio: true,
video: true,
videoConstraints: {
mandatory: {
chromeMediaSource: 'tab',
minWidth: 1920,
maxWidth: 1920,
minHeight: 1080,
maxHeight: 1080
}
}
};
function handleCapture(stream) {
console.log('content captured');
console.log("Adding Stream: ", stream);
}
但是当我像这样发送消息以从我的 Web 应用程序开始录制时:
var event = document.createEvent('Event');
event.initEvent('startRecording');
document.dispatchEvent(event);
然后扩展会引发异常:
1) 响应 tabCapture.capture 时出错:MediaStream 是必需的。2) 运行 tabCapture.capture 时未选中 runtime.lastError:尚未为当前页面调用扩展(请参阅 activeTab 权限)。无法捕获 Chrome 网页。
以下是我提供的权限:
"permissions": [
"tabCapture",
"tabs",
"activeTab",
"http://*/*",
"https://*/*" ,
"http://localhost:1615/*"
]
但是当我单击我的扩展按钮并重复相同的过程(发送消息进行录制)时,一切正常。我不知道为什么每次都必须单击扩展按钮才能开始捕获屏幕。如何自动启动它?
我还为我的扩展定义了快捷键。当我在发送消息进行录制之前按下它们时,一切正常。但是当我从我的应用程序中触发/模拟它们时,再次出现相同的异常。
请帮忙。
这里的问题是Chrome无法跟踪此事件是通过单击启动的事实。因此,它不是"援引"的。
相反,您应该在内容脚本代码/上下文中绑定click
事件侦听器,并直接从那里发送消息。我认为Chrome接受它作为用户的调用就足够了。
或者,绕过内容脚本直接向扩展发送消息可能会起作用。这可以通过"externally_connectable"
方法(文档)来实现。
相关文章:
- jquery动画可以通过编程链接吗
- 一点javascript元编程&可链接的设置器
- 如何正确编程jQuery动画与平滑(导航栏)
- 在javaservlet doPost方法中启动线程时,无法返回异常消息
- document.applet.method在Mounatin Lion上抛出safari 6+JDK7异常
- 为什么浏览器没有为语法错误抛出异常
- java,javascript签名的小程序(文件选择,ftp上传)安全性/套接字异常
- node.js和express中的异常处理
- 派生进程的stdout在管道传输时工作异常
- NodeJS和pg promise,捕获PostgreSQL异常
- 以编程方式填充组合框道场 (1.8) 的最佳方法是什么?
- 以编程方式选择文本Mobile Safari
- 我们可以使用任意的编程语言来动态化HTML页面吗
- 我如何编程许多不同的条件和操作
- 当显式定义控制器参数时,默认模型绑定器会发生异常
- 显示引导弹出操作异常的逻辑
- 调用谷歌地图路线服务时未捕获的异常
- web配置http到https重定向异常
- 转换异常时间&Datestring到JavaScript日期
- 以编程方式调用选项卡捕获引发异常