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

如何在MacOS的Chrome中用JavaScript/React打开iMessage并预填内容?

MacOS Chrome 中预填短信按钮无响应的解决方案

问题根源

MacOS 版 Chrome 不支持通过标准sms:协议唤起短信应用,正确的协议是iMessage:,但直接修改window.location的方式在 Chrome 中可能因安全策略被拦截,导致无响应。另外你原代码里的 URL 编码存在错误(This%20is%20the%text应为This%20is%20the%20text),也可能影响功能正常触发。

修正后的代码实现

改用创建<a>标签并模拟点击的方式,绕开 Chrome 的安全限制:

<button onClick={() => {
  const smsLink = document.createElement('a');
  smsLink.href = 'iMessage:?&body=This%20is%20the%20text';
  smsLink.click();
}}>Click me</button>

关键注意事项

  • 协议选择:MacOS Chrome 仅识别iMessage:协议,sms:协议无法唤起应用
  • 触发方式:直接修改window.location容易被 Chrome 的安全机制拦截,创建<a>标签模拟点击更可靠
  • URL 编码:确保短信内容的空格等特殊字符正确编码为%20,避免解析异常
  • 环境测试:不要在file://本地文件环境测试,Chrome 对本地文件的外部协议触发限制严格,建议用http://localhost这类本地服务器环境
  • 权限检查:确保 Chrome 被允许打开外部应用(首次触发时会弹出权限请求,需点击允许)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:40:37