YUI 2.9富文本编辑器在Firefox 58中失效,求相关经验分享
我之前也碰到过一模一样的问题——YUI 2.9的富文本编辑器在Firefox 58里直接灰掉,完全没法操作,试了网上那些针对IE的补丁根本没用。折腾了好几天,终于找到几个亲测有效的修复点,分享给你:
修复浏览器支持性检测逻辑
YUI 2.9的isSupported方法对新版Firefox的版本判断有漏洞,它直接拿字符串格式的版本号和数字做比较,导致新版Firefox被误判为不支持。找到YUI库中YAHOO.widget.Editor.prototype.isSupported这段代码,把Firefox相关的判断修改成:if (A && A.gecko && parseFloat(A.gecko) < 1.9) { return false; }核心是把
A.gecko转成浮点数再做版本对比,这样Firefox 58就不会被错误拦截。修正iframe加载事件绑定
Firefox 58对iframe的load事件处理做了调整,YUI旧代码里的绑定方式可能没触发编辑器初始化逻辑。找到_initFrame方法,把iframe的加载监听改成用YUI的事件绑定工具:YAHOO.util.Event.on(this._elIframe, 'load', function() { this._setupEditor(); this._setInitialContent(); // 保留原有的其他初始化代码 }, this, true);确保上下文
this正确指向编辑器实例,这样iframe加载完成后才能正常初始化编辑器内容。临时应急方案:调整Firefox安全设置
如果暂时没法修改YUI源码,可以先让用户临时调整Firefox设置:在地址栏输入about:config,搜索security.sandbox.content.level,把它的值从默认的3改成2。不过这只是权宜之计,长期来看还是代码修复更可靠。
另外提一句:YUI 2.x已经停止维护很多年了,后续还可能碰到更多新版浏览器的兼容问题,长远考虑的话,建议逐步迁移到Quill、TinyMCE这类仍在维护的现代富文本编辑器。
内容的提问来源于stack exchange,提问作者anupx73

