根据permissions documentation,如果我们有activeTab
个权限,我们无需指定基于网址的权限
以下任何网址都匹配所有主机:
http://*/* https://*/* *://*/* <all_urls>
请注意,您可以避免声明所有主机权限 使用activeTab权限。
但是这只能工作一次,第二次出错(扩展UI在我们第二次尝试时打开),如果我们通过点击扩展图标再次启动弹出窗口就可以正常工作。
Unchecked runtime.lastError while running tabs.executeScript:
Cannot access contents of the page.
Extension manifest must request permission to access the respective host.
以下是详细信息
的manifest.json
{
"manifest_version": 2,
"name": "Getting started example",
"description": "This is hello world example",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": [
"activeTab"
]
}
popup.html
<html>
<head>
<title>Getting Started Extension's Popup</title>
<script src="popup.js"></script>
</head>
<body>
<div>Hello World!</div>
<input type="button" id="refreshPage" value="Refresh Page"/>
</body>
</html>
popup.js
document.addEventListener('DOMContentLoaded', function() {
function refreshPage() {
chrome.tabs.executeScript(null, {
code: 'window.location.reload(true)'
}, function(){
console.log("Page refershed");
});
}
document.getElementById("refreshPage").addEventListener("click", refreshPage);
});
如果我们添加"*://localhost/*"
(这适用于localhost),还有另一种方法可以为所有主机*://*/*
指定(不确定这是否正确且安全),刷新按钮正在多次运行没有重新启动弹出窗口UI。 ActiveTab与基于URL的权限之间是否存在差异?由于特定原因,建议使用哪种特定方式?
答案 0 :(得分:4)
activeTab 会暂时授予权限,直到导航或关闭选项卡。我的猜测是,在点击刷新时重新加载标签会撤消 activeTab 权限。避免使用window.location.reload
或为您尝试执行脚本的域指定网址匹配。
https://developer.chrome.com/extensions/activeTab
activeTab权限为扩展程序提供临时访问权限 用户调用扩展时当前活动的选项卡 - 例如 通过单击其浏览器操作。对选项卡的访问将持续到选项卡 导航或关闭。