Bootstrap3升级到5.1后bootstrap-editable.js报constructor错误如何解决
错误原因
Bootstrap 3.x到5.x的jQuery插件API发生了不兼容变更:Bootstrap 3中popover组件的构造器及默认配置挂载在$.fn.popover.Constructor下,Bootstrap 5已移除该挂载路径,因此调用$.fn.popover.Constructor.DEFAULTS时会触发读取undefined的constructor属性的报错。
解决方案
方案1:修改bootstrap-editable.js源码
直接修改报错对应的代码行即可完成适配:
将原代码中
defaults: $.fn.popover.Constructor.DEFAULTS,
替换为
defaults: bootstrap.Popover.Default,
如果后续还遇到其他同类组件(如tooltip)的类似报错,按照相同逻辑替换为bootstrap.Tooltip.Default即可。
方案2:全局添加兼容映射(无需修改editable源码)
在引入bootstrap-editable.js之前,先执行以下兼容代码,补全BS3风格的API映射:
// Bootstrap 5 兼容 bootstrap-editable 映射配置 if (window.bootstrap && $.fn.popover && !$.fn.popover.Constructor) { $.fn.popover.Constructor = bootstrap.Popover; $.fn.popover.Constructor.DEFAULTS = bootstrap.Popover.Default; // 如需兼容tooltip可追加以下配置 // $.fn.tooltip.Constructor = bootstrap.Tooltip; // $.fn.tooltip.Constructor.DEFAULTS = bootstrap.Tooltip.Default; }
注意事项
- 确保项目已正确引入Bootstrap 5依赖的Popper.js,否则popover组件无法正常初始化
- 若使用无jQuery绑定的原生Bootstrap 5,需要额外引入Bootstrap 5官方提供的jQuery适配插件,确保
$.fn.popover方法可正常调用
内容的提问来源于stack exchange,提问作者Alan Pauil
相关产品推荐
相关产品推荐

