我在使用Chrome 扩展的可选权限 API时遇到了问题。在以下扩展的最小示例中,我希望脚本首先检查权限是否存在,如果不存在,则请求权限并修改令牌以说明权限存在。我通过扩展的选项页面实现了这一点,成功由一个从红色变为蓝色的正方形表示。失败由保持红色的方块表示。
有趣的是,脚本只有在我在 Chrome 的 Inspector 中设置断点并逐步执行时才有效。当扩展程序在没有断点的情况下运行时,它无法工作(甚至不会提示权限)。我将此作为Chrome 的错误提交,但我真的想知道我是否做错了什么。
清单.json
{
"description": "Permissions Tester",
"name": "Permissions Tester",
"options_page": "options.html",
"optional_permissions": [ "http://api.labs.crossref.org/" ],
"version": "1.0.0"
}
选项.html
<script>
function setCrossrefPermission() {
var perm;
chrome.permissions.contains({
origins: ['http://api.labs.crossref.org/']
}, function(result) {
if(!result) {
chrome.permissions.request({
origins: ['http://api.labs.crossref.org/']
}, function(granted) {
perm = granted;
});
} else {
perm = true;
}
});
return perm;
}
function hitIt() {
if( setCrossrefPermission() ) document.getElementById("notify").style.backgroundColor = "blue";
}
</script>
<html>
<body>
<div style="width: 100px; height:100px; background-color:red;" id="notify"></div>
<input type="submit" id="button" onclick="hitIt(); return false;" value="Accept Permission" />
</body>
</html>
我在这里将其作为 CRX 上传,以便于安装和尝试。或者您可以简单地加载上面的解压扩展。