





















$.fn.oldVal = $.fn.val;
$.fn.val=function(value)
{
var _this=this,editor;
if(value===undefined)if(_this[0]&&(editor=_this[0].xheditor))return editor.getSource();else return _this.oldVal();//读
return _this.each(function(){if(editor=this.xheditor)editor.setSource(value);else _this.oldVal(value);});//写
}
问题分析:
代码将 $.fn.oldVal = $.fn.val 保存原 val() 方法
然后在新的 val() 方法中又调用了 _this.oldVal()
由于 oldVal 实际上就是原 val() 方法,但在某些情况下可能又调用了新的 val(),导致无限递归
解决方案:
方案1:修复 xheditor 的 val 方法(推荐)
修改 $.fn.val 的实现,避免无限递归:
方案2:使用兼容性更好的方式
或者使用更安全的方式,直接调用原始的 jQuery 方法:
方案3:临时解决方法
如果你需要快速解决问题,可以在加载 xheditor 后添加以下代码:
根本原因:
这个问题通常发生在:
jQuery 版本升级(特别是从旧版本升级到 3.x)
多次加载 xheditor 插件
与其他插件冲突
建议使用方案1或方案2直接修改 xheditor 源码,这样可以一劳永逸地解决问题。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。