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

Swiper插件在Safari及iPhone异常:**运算符语法错误求助

解决Swiper在Safari/iPhone设备上的语法错误与兼容性问题

嘿,这个问题我之前踩过坑!完全跟你推测的一样——Safari(包括iPhone端所有浏览器、Mac桌面端Safari)不支持ES2016引入的**指数运算符,这就是控制台报SyntaxError: Unexpected token '*'的根源,进而导致插件加载异常、视频无法自动播放。

直接修复方案:替换**为Math.pow()

把你提到的那段代码里的指数运算符换成浏览器全兼容的Math.pow()方法就行:

原代码:

if (params.resistance) data$$1.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data$$1.startTranslate + diff) ** resistance

修改后:

if (params.resistance) data$$1.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data$$1.startTranslate + diff, resistance)

为什么会出现这个问题?

**是ES2016新增的指数运算符,虽然现代主流浏览器都支持,但Safari的支持起步较晚:

  • 桌面Safari需要10.1及以上版本
  • iOS Safari需要10.3及以上版本

如果用户的设备系统版本偏旧,就会触发这个语法错误,导致Swiper无法正常初始化,进而引发视频自动播放失败等连锁问题。而Math.pow()是从ES3就存在的原生方法,所有浏览器(包括旧版Safari)都能完美识别。

进阶优化:用Babel自动转译(如果是项目开发)

如果你是在自己的前端项目中引入Swiper,不想手动修改源码,可以通过Babel来自动转译新语法:

  • 安装@babel/plugin-transform-exponentiation-operator插件
  • 在Babel配置文件中启用该插件,它会自动把所有**运算符转换成Math.pow()的写法,一次性解决所有旧浏览器的兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:59:37