权限
当在 manifest.json 声明了"activeTab"权限后, 也并不意味着可以随时随地获得此权限. 还需要满足以下条件:
- 用户执行操作. (Google Chrome 工具栏中的扩展程序图标)
- 用户操作右键菜单.
- 用户通过 commands API 执行键盘快捷键.
- 用户通过多功能框 API 接受建议. (地址栏)
例如, 你创建了一个包含按钮的侧边栏, 你想要在用户点击按钮时截图. 这将不会成功, 因为侧边栏并不在上述条件中. 如果你把按钮移动到右键菜单中, 用户点击右键菜单后截图, 这样会成功.
传递消息
首先, 有两个发送消息的方法: chrome.runtime.sendMessage, chrome.tabs.sendMessage. 你在看文档时可能不会注意到有两个方法.
- chrome.tabs.sendMessage, 向标签页的
content script
发送消息. - chrome.runtime.sendMessage, 向其他组件或后台脚本发送消息,
content script
不能收到它发出的消息. - 接收消息只需要使用一个方法: chrome.runtime.onMessage.