内容脚本和 Chrome API:未定义的参考错误
在 Chrome 扩展程序中使用内容脚本时,您可能会遇到错误“无法读取尝试访问 Chrome API(例如 chrome.tabs)时出现“未定义的属性”。尽管在清单中授予了必要的权限,但仍会出现此问题。
了解 Chrome API 可用性
出于安全考虑,内容脚本对 Chrome API 的访问受到限制。在内容脚本中只能访问一组选定的 API:
API,例如chrome.tabs 操作浏览器选项卡,仅在后台脚本(或 Manifest V3 中的 Service Worker)、弹出脚本和其他扩展上下文中可用。
解决方案:消息传递
要访问内容脚本中不可用的 Chrome API,您必须将消息从内容脚本传递到后台脚本。然后后台脚本可以执行 API 操作并将结果发送回内容脚本。
这是演示此方法的代码片段:
// content script: chrome.runtime.sendMessage({ type: "getTabs" }, function(response) { console.log(response.tabs); }); // background script: chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { if (request.type == "getTabs") { chrome.tabs.query({}, function(tabs) { sendResponse({ tabs: tabs }); }); } });
通过遵循此方法,您可以有效地访问内容脚本中不可用的 Chrome API,同时保持安全性和封装性。
以上是为什么我的内容脚本无法访问 chrome.tabs 以及如何修复'未定义的引用”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!