我正在开发一个谷歌浏览器扩展,它有一个内容脚本、一个背景页面、一个设置页面和一个弹出页面。我学到了虽然内容脚本加载到 Chrome Web Store 上的艰难方法,但永远不会调用 onMessage 侦听器。
我可以在执行时始终中断chrome.extension.onMessage.addListener
,但永远不会调用侦听器。因此,当我chrome.tabs.sendMessage
从后台或弹出页面执行时,该responseCallback
函数永远不会被调用 - 即内部的逻辑responseCallback
永远不会执行。Chrome 甚至不会将其视为错误场景 - 它接受请求,但此后保持沉默。
如果它将此视为错误情况(如尝试向chrome://
页面发送消息),那么responseCallback
将使用未定义的响应参数调用 - 这将导致我的错误处理代码执行......但没有这样的运气。
我可以在我的代码中添加特殊行为http(s)://chrome.google.com/webstore/*
,但希望有一种更正式的方式来查找被禁止执行的页面。将不胜感激那里的任何指示。
我在这里找到了一篇很棒的帖子,但它没有编程 API,因此提出了这个问题。
我已经知道 Chrome 网上商店和chrome://
URL 是特殊情况。但是,根据我的调查,chrome://
URL 上的行为与 Chrome 网上应用店不同。在chrome://
URL 上,我的内容脚本似乎根本没有加载,并且sendMessage
' 的responseCallback
函数被一个空/未定义的响应对象调用。这是 API 发出错误信号的官方方式,对我来说效果很好。
我的问题是能够以编程方式检测 Chrome 网上应用店所遇到的错误,而无需对 URL 进行硬编码(URL 可能会随着时间而变化)。
提前感谢您的回复。