【发布时间】:2015-01-22 10:03:07
【问题描述】:
我在 chrome 扩展的内容脚本中定义了一个监听器:
document.addEventListener("startRecording", function(data) {
chrome.runtime.sendMessage({'action' : 'captureCurrentTab'});
});
并在我的 extension.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);
}
但是当我像这样从我的网络应用程序发送消息开始录制时:
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/*"
]
但是当我点击我的扩展按钮并重复相同的过程(发送消息进行录制)时,一切正常。我不知道为什么我每次都必须单击扩展按钮才能开始捕获屏幕。 如何自动启动?
我还为我的扩展程序定义了快捷键。当我在发送消息进行录制之前按下它们时,一切正常。但是当我从我的应用程序触发/模拟它们时,又会出现同样的异常。
请帮忙。
【问题讨论】:
-
是什么导致了文档中的
startRecording事件?如果它不是一个明确的用户手势,那么它就不会被视为“调用”并且会失败。 -
我的应用程序中有一个按钮。我的按钮单击事件上有此代码: var event = document.createEvent('Event'); event.initEvent('startRecording'); document.dispatchEvent(event);
-
你是新来的;提示:您可以并且应该使用其他信息编辑您的问题。
标签: javascript google-chrome-extension