Safari Web Extension非持久化后台脚本30秒后无响应问题求助
问题概述
我遇到了Safari Web Extension的异常问题:即便内容脚本持续与非持久化后台脚本通信,该后台脚本仍会在30秒后无响应。
我准备了最小复现示例,模拟器中后台脚本可永久响应,但在物理设备上,它活动30秒后会失效,仅能通过切换扩展启用/禁用开关短暂恢复,30秒后再次崩溃。
复现步骤
- 克隆示例仓库
- 在Xcode中打开并针对物理设备运行
- 在设备Safari中启用该扩展
- 打开新标签页,导航至谷歌主页
- 在Mac端打开Safari Web Inspector,进入扩展后台页面
- 可见内容脚本每隔1秒向后台脚本发送消息
- 30秒后后台脚本停止接收消息,控制台交互(如输入
console.log("hello"))无响应。
额外发现
查看内容脚本代码可知,每1秒调用runtime.sendMessage会导致后台30秒后崩溃。
调整间隔测试:2秒间隔15次调用(累计30秒)后崩溃;3秒间隔10次调用(累计30秒)后崩溃;4秒间隔时,后台脚本可永久响应sendMessage请求。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

