Ruby on Rails站点在Safari 15版本无法加载的问题问询
可能导致Safari 15下Ruby on Rails站点JS加载失败的常见原因
- ES6+新语法兼容问题:Safari 15对部分ES2021/ES2022新增语法的支持存在缺失,比如边缘场景下的顶级await、逻辑赋值运算符、新数组内置方法等,如果你的Rails项目没有针对Safari 15做Babel转译,就会出现JS静默执行失败、控制台无报错的情况。可以检查项目中
babel.config.js的浏览器兼容配置,确认是否包含safari 15的适配规则。 - Turbo/Rails UJS版本兼容问题:如果你使用的是Rails 7默认的Turbo 7.x版本,部分旧版Turbo存在和Safari 15的适配bug,会导致页面加载时JS阻塞无响应。可以尝试将
turbo-railsgem升级到最新稳定版,或者降级到经过社区验证兼容的7.1.0版本测试。 - 正则表达式兼容问题:Safari 15对正则后行断言、命名捕获组的部分写法支持存在缺陷,如果你的JS代码中包含这类正则逻辑,会出现执行中断无报错的情况。
- Content Security Policy (CSP) 配置兼容问题:Safari 15对CSP规则的校验比其他浏览器更严格,尤其是
script-src、unsafe-inline相关的配置,如果你的Rails项目config/initializers/content_security_policy.rb中的规则没有适配Safari 15特性,会导致JS被静默拦截,控制台无明显报错。 - Service Worker 缓存兼容问题:如果你的站点开启了Service Worker做离线缓存,Safari 15的Service Worker实现存在已知bug,会导致页面加载时资源加载阻塞,禁用JS后跳过Service Worker加载逻辑即可正常访问。
- CSS-in-JS/原子化CSS工具兼容问题:如果你使用了Tailwind JIT模式、Styled Components这类依赖JS处理样式的工具,部分旧版本工具生成的JS代码存在Safari 15兼容问题,会导致JS执行中断。
内容的提问来源于stack exchange,提问作者1ManStartup
相关产品推荐
相关产品推荐

