2014-09-21 82 views
3

所以我想写一些代码,当我的网站上按下按钮时,它可以让我截取页面。代码有效,但唯一的问题是我必须先点击Chrome扩展,然后点击按钮才能截取屏幕截图。我想这是因为活动选项卡没有被调用。有任何想法吗?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 
}) 

和I P屁股从网页中的消息单击图像时(调用函数围棋()),像这样:

var go = function() { 
      var event = document.createEvent('Event'); 
      event.initEvent('hello'); 
      document.dispatchEvent(event); 
      } 

回答

8

Unchecked runtime.lastError while running tabs.captureVisibleTab: The 'activeTab' permission is not in effect because this extension has not been invoked.

这个错误意味着你的分机没有足够的权限来访问当前选项卡,如果有没有明确的用户手势(就像点击你的扩展)。我必须说这里的错误非常具有误导性,因为您的清单中没有activeTab权限。

Docs提及您need specifically the "<all_urls>" permission为了在没有显式调用的情况下使用此函数。请参阅this bug以获取该要求的解释。

相关问题