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

Bootstrap 4.1模态框报错‘Error: Object.keys: argument is not an Object’求助

Bootstrap 4.1升级后IE11模态框报错的原因分析与排查

我之前处理过不少Bootstrap版本升级后IE兼容性的问题,结合你遇到的Object.keys: argument is not an Object报错,大概率是以下几个原因导致的:

  • Bootstrap 4.1的IE11兼容性逻辑变化
    Bootstrap 4.1在组件实现上调整了部分对象处理逻辑,而IE11对ES5+ API的支持有局限性——比如Object.keys()在IE11中如果传入非对象(undefined、null或原始值)会直接抛出错误,而Bootstrap 4.0可能做了更宽松的兼容兜底。当你调用$('#PopupModalData').modal()时,内部处理某个配置项或DOM关联对象时,可能传入了非对象值触发了这个报错。

  • 模态框DOM结构不符合Bootstrap 4.1要求
    检查你的#PopupModalData模态框DOM结构是否完整合规,比如是否缺失了.modal、.modal-dialog、.modal-content这些核心层级,或者必要的属性(如data-toggle)。升级后Bootstrap对DOM结构的校验更严格,若结构缺失,内部获取元素相关对象时可能返回null,进而传入Object.keys()触发错误。

  • jQuery版本不匹配
    Bootstrap 4.1对jQuery的版本要求比4.0更高,官方推荐使用jQuery 3.3.1及以上版本,且不能用slim版(它缺少Bootstrap依赖的部分方法)。如果你仍在使用旧版jQuery,在IE11中可能出现对象返回结果不符合Bootstrap 4.1预期的情况,导致内部拿到非对象值触发报错。

  • 自定义脚本或第三方插件冲突
    若你在模态框初始化前后有自定义脚本修改配置或DOM元素,升级后Bootstrap内部逻辑的变化可能导致这些自定义代码传入了不符合要求的值。比如你可能在调用modal()前将某个配置项改为非对象类型,或者覆盖了Bootstrap的内部方法,最终让Object.keys()接收到无效参数。

快速排查建议

  1. 打开IE11开发者工具的控制台,查看报错堆栈,定位到Bootstrap模态框源码中触发错误的具体行,这能帮你精准锁定问题点。
  2. 暂时移除所有自定义脚本和第三方插件,只保留Bootstrap 4.1和符合要求的jQuery,测试基础模态框是否能正常启动,排除自定义代码的干扰。
  3. 对比Bootstrap 4.0与4.1的模态框源码差异,重点关注使用Object.keys()的对象处理逻辑。
  4. 确认IE11未开启兼容模式(开发者工具→文档模式),兼容模式会引发更多诡异的JS兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:29:09