Chrome商店与本地构建注入内容脚本的行为不一致问题咨询
问题解答
这是预期行为,具体原因分两部分说明:
1. file:///协议内容脚本注入的差异
当chrome.extension.isAllowedFileSchemeAccess禁用时:
- 本地构建的扩展处于开发/未签名模式,Chrome会放宽部分安全限制,允许临时绕过文件访问权限限制以方便调试;
- Chrome商店上架的扩展是签名后的正式版本,会严格执行Chrome的安全策略——只要
isAllowedFileSchemeAccess未开启,就禁止扩展向file:///协议的页面注入内容脚本,这是为了防止恶意扩展未经用户许可访问本地文件。
2. update事件触发的差异
在chrome://extensions中切换文件访问权限时:
- 本地构建的扩展,Chrome会将权限变更视为扩展的“更新”操作,因此触发
chrome.runtime.onInstalled的update事件; - 商店版本的扩展,用户手动调整权限属于设置修改,并非扩展本身的版本更新,所以不会触发
update事件。Chrome针对开发模式和正式发布的扩展设计了不同的事件触发逻辑,适配调试与生产环境的不同需求。
相关代码示例
chrome.runtime.onInstalled.addListener(function(details){ if(details.reason == "install"){ //call a function to handle a first install }else if(details.reason == "update"){ //call a function to handle an update } });
内容的提问来源于stack exchange,提问作者The.Wolfgang.Grimmer
相关产品推荐
相关产品推荐

