【发布时间】:2015-02-24 12:01:57
【问题描述】:
在 Chrome 扩展程序中,我想要求用户通过 browser_action 的弹出窗口链接(也就是带有链接的工具栏弹出窗口)完全访问页面。当用户单击链接时,我收到此错误:
runtime.lastError while running permissions.request: This function must be called during a user gesture
然而用户实际上点击了链接和“用户手势”。关于如何调试被视为用户手势的任何想法?
点击按钮后,我通过 chrome 的 chrome.permissions.request api 请求完全访问权限:
$('#button-requestpermissions').click(function(){
requestAmbientPermission(function(granted) {
if (granted) {
// code never reached as granted === false
}
});
});
function requestAmbientPermission(callback){
// Permissions must be requested from inside a user gesture, like a button's click handler.
chrome.permissions.request({
permissions: ['activeTab'],
origins: ['<all_urls>']
}, callback);
}
清单具有像这样设置的可选权限:
"permissions": [
"https://www.meethue.com/",
"https://colorlovers.herokuapp.com/"
],
"optional_permissions": [
"activeTab",
"<all_urls>"
],
【问题讨论】:
-
请求权限代码可能需要从后台页面而不是内容脚本执行
-
Zig,我确实尝试过暴力破解解决方案 - 从后台页面执行 permissions.request 会产生相同的错误。
-
请注意:
activeTab权限不会产生警告。它是made for that specific purpose。因此,确实没有必要将其设为可选。
标签: javascript google-chrome-extension permissions