You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS 18 Safari扩展tabs.sendMessage无法定向发送问题

iOS 18 Safari 中 browser.tabs.sendMessage 发送消息至所有标签页的问题

问题说明

调用 browser.tabs.sendMessage(tabId, {'message'}) 向指定 tabId 对应的标签页内容脚本发送消息时,iOS 18 Safari 下消息会被发送到所有标签页,而该代码在 iOS 17 中可正常仅发送至目标标签页。

可行的临时处理方案

  • 校验 tabId 有效性:发送消息前先通过 browser.tabs.get(tabId) 确认目标标签页的状态,避免使用无效或已过期的 tabId:
    browser.tabs.get(tabId)
      .then(() => browser.tabs.sendMessage(tabId, {'message'}))
      .catch(err => console.error('无效的标签页ID:', err));
    
  • 内容脚本端过滤消息:在内容脚本接收消息时,校验当前标签页的 ID 是否匹配目标 tabId,仅处理对应标签页的消息:
    // 内容脚本代码
    browser.runtime.onMessage.addListener((message, sender) => {
      if (sender.tab.id === 你的目标tabId) {
        // 执行消息处理逻辑
      }
    });
    
  • 场景适配下替换API:如果扩展架构允许,可尝试用 browser.runtime.sendMessage 配合自定义标签页标识传递消息,但注意该API行为与 tabs.sendMessage 存在差异,需调整逻辑适配。

原因分析

该问题大概率是 iOS 18 Safari 对 WebExtensions API 的实现bug,建议向 Apple 提交包含复现步骤和代码示例的反馈,推动官方修复。

内容的提问来源于stack exchange,提问作者Dinesh Choudhary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 23:58:13