IE11环境下jQuery.globalEval执行Bootstrap Duration Picker报错问题
解决Bootstrap Duration Picker在IE中抛出"Expected ')' "错误的方案
这个问题我之前处理过类似案例,核心原因是IE(尤其是旧版本)对ES6及以上JavaScript语法的支持非常有限,而Bootstrap Duration Picker大概率使用了箭头函数、let/const变量声明、模板字符串这类IE不兼容的语法。当jQuery 1.12.4的jQuery.globalEval()尝试执行这些未兼容的代码时,就会触发语法报错。
下面是具体的解决步骤:
优先寻找兼容版本
先确认Bootstrap Duration Picker是否有官方标注兼容IE的版本,或者社区维护的ES5兼容分支。如果能找到,直接替换成该版本就能快速解决问题。将库代码转译为ES5
如果找不到现成的兼容版本,就用Babel把bootstrap-duration-picker.js转译为IE支持的ES5语法:- 通过npm安装Babel工具链:
npm install @babel/core @babel/cli @babel/preset-env --save-dev - 创建
.babelrc配置文件,指定目标兼容环境:{ "presets": [ ["@babel/preset-env", { "targets": { "ie": "11" } }] ] } - 执行转译命令生成兼容文件:
npx babel bootstrap-duration-picker.js --out-file bootstrap-duration-picker-es5.js
- 通过npm安装Babel工具链:
替换页面引用文件
在你的HTML代码中,把原来引入的bootstrap-duration-picker.js替换成转译后的bootstrap-duration-picker-es5.js,确保IE加载的是语法兼容的代码。功能验证
在IE浏览器中打开页面,检查是否还会抛出语法错误,同时测试Duration Picker的各项功能是否正常运行。
补充说明:jQuery 1.12.4本身是兼容IE的,所以问题的根源完全来自第三方库的语法兼容性,转译是最通用的解决思路。
内容的提问来源于stack exchange,提问作者Fishcake
相关产品推荐
相关产品推荐

