所以我想写一些代码,这样我可以在我的网站上按下按钮时截取页面的截图。代码有效,但唯一的问题是我必须首先点击chrome扩展,然后我可以点击按钮来获取截图。我想这是因为没有调用活动选项卡。有什么想法吗?
这是错误: 运行tabs.captureVisibleTab时未经检查的runtime.lastError:'activeTab'权限无效,因为尚未调用此扩展名。
的manifest.json
"permissions": [
"tabs",
"*://google.com/*"
],
background.js
var id = 100;
// Listen for a click on the camera icon. On that click, take a screenshot.
function takeScreenshot() {
chrome.tabs.captureVisibleTab(null, function(screenshotUrl) {
.....
}
chrome.extension.onRequest.addListener(function(request, sender) {
takeScreenshot();
});
contentscript1.js
contentScriptMessage = "Take a screenshot";
document.addEventListener("hello", function(data) { //When overlay is clicked
chrome.extension.sendRequest({message: contentScriptMessage}); //call background script
})
单击图像时,我会从网页传递一条消息(调用函数go()),如下所示:
var go = function() {
var event = document.createEvent('Event');
event.initEvent('hello');
document.dispatchEvent(event);
}
答案 0 :(得分:9)
运行tabs.captureVisibleTab时未经检查的runtime.lastError:' activeTab'权限未生效,因为尚未调用此扩展名。
此错误表示如果没有明确的用户手势(例如点击您的扩展程序),您的扩展程序没有足够的权限来访问当前标签页。我必须说这个错误在这里有误导性,因为你没有在你的清单中获得activeTab
的许可。
文档提及您need specifically the "<all_urls>"
permission以便在没有显式调用的情况下使用此函数。有关要求的说明,请参阅this bug。