Safari 9及更低版本无法加载JavaScript和jQuery代码求助
搞定Safari 9及更低版本的JS/jQuery脚本加载问题
兄弟,我帮你捋捋这个头疼的问题——你的脚本在老Safari里跑不起来,核心原因其实很清晰,咱们一步步来解决:
揪出问题根源
你代码里用到了fetch() API,但Safari 9及更早版本完全不支持这个玩意儿,这绝对是主要的“罪魁祸首”。另外还要留意jQuery版本:如果你用的是jQuery 3.x及以上,它早就放弃支持Safari 8及更低版本了,这也会导致脚本出问题。
具体修复方案
1. 把fetch换成兼容性更好的jQuery Ajax
既然老Safari不认fetch,直接改用jQuery自带的$.ajax(),这玩意儿在老浏览器里稳得一批:
// 替换你原来的req1函数 function req1() { $.ajax({ url: 'https://jsonplaceholder.typicode.com/...', // 补全你的完整接口地址 method: 'GET', success: function(data) { // 这里写你原来fetch成功后要执行的逻辑 }, error: function(xhr, status, error) { // 这里加错误处理的代码 } }); }
2. 选对jQuery版本
如果必须支持Safari 8及更低版本,一定要用jQuery 2.x系列(最后一个稳定版是2.2.4),jQuery 3.x已经把这些老浏览器彻底抛弃了。
3. 非要用fetch?试试polyfill(可选)
要是你实在不想改代码,也可以引入whatwg-fetch polyfill来让老Safari支持fetch,但记得要在你的脚本之前加载它:
<!-- 放在你的业务脚本前面引入 --> <script src="https://cdn.jsdelivr.net/npm/whatwg-fetch@3.6.2/dist/fetch.umd.min.js"></script>
不过我更推荐用jQuery Ajax,少加一个依赖更省心。
额外要检查的地方
- 看看你的代码里有没有用ES6+的语法,比如箭头函数
() => {}、let/const这些,老Safari对这些支持也不全,要是用了就换成ES5的写法(比如普通函数、var)。 - 打开Safari的开发者工具看控制台,有没有具体的报错信息,比如资源加载失败、语法错误啥的,这些能帮你更快定位问题。
内容的提问来源于stack exchange,提问作者Crashy
相关产品推荐
相关产品推荐

