您不需要添加公共API的权限。如果网站不允许跨源请求,则只需添加权限即可。
此外,通过内容脚本使用Web侦听器为您的键盘快捷方式添加侦听器不是一个好的解决方案,因为它需要权限警告,并且通常效率不高。相反,您应该使用Chrome的commands API与activetab。您的扩展程序仅在用户点击键盘快捷方式时启动,用户可以通过chrome:// extensions底部的快捷方式链接自定义快捷方式。
为此,请将"permissions": [ "activeTab" ]
添加到您的清单。当用户点击这些按键
"commands": { "showcontentdialog": { "suggested_key": { "default": "Ctrl+Shift+Y" }, "description": "show content dialog" } }
接下来,设置你的背景页面监听器和inject您的内容脚本:添加您的组合键
chrome.commands.onCommand.addListener(function(command) {
if(command.name == "showcontentdialog") {
chrome.tabs.executeScript({ file: "main.js" })
}
})
此外,你应该使用,而不是设置innerHTML的appendChild,像这样:
var dialog = document.createElement("dialog")
dialog.textContent = "This is a dialog"
var button = document.createElement("button")
button.textContent = "Close"
dialog.appendChild(button)
button.addEventListener("click", function() {
dialog.close()
})
document.body.appendChild(dialog)
dialog.showModal()
您的扩展程序是否需要访问站点,不包括注入对话框? –
我不需要访问用户当前所在的站点,我只想使用'getSelection()。toString()'获取当前突出显示的文本。但是,我确实需要向MediaWiki API发出跨域请求。据我了解,我可以在Chrome扩展清单中声明一个许可,以允许跨站点域请求,尽管通常不允许使用JS。是对的吗? –