Chrome屏幕截图仅在点击扩展程序时有效

时间:2014-09-21 23:21:06

标签: javascript google-chrome-extension

所以我想写一些代码,这样我可以在我的网站上按下按钮时截取页面的截图。代码有效,但唯一的问题是我必须首先点击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);
          }

1 个答案:

答案 0 :(得分:9)

  

运行tabs.captureVisibleTab时未经检查的runtime.lastError:' activeTab'权限未生效,因为尚未调用此扩展名。

此错误表示如果没有明确的用户手势(例如点击您的扩展程序),您的扩展程序没有足够的权限来访问当前标签页。我必须说这个错误在这里有误导性,因为你没有在你的清单中获得activeTab的许可。

文档提及您need specifically the "<all_urls>" permission以便在没有显式调用的情况下使用此函数。有关要求的说明,请参阅this bug