首页 > 代码库 > IE11下,CKEditor在Bootstrap Modal中的下拉问题
IE11下,CKEditor在Bootstrap Modal中的下拉问题
原问题解决方案链接:http://ckeditor.com/forums/CKEditor/Editor-Dropdowns-dont-work-in-IE11
最近在项目中需要在Bootstrap Modal弹出框中载入CKEditor。
初始化CKEditor以后,在IE11下,格式/字体/颜色的下拉会闪现一下后就消失,但在chrome和firefox下没问题。
Google了以后终于找到解决方法。
以下代码添加了$(e.target.parentNode).hasClass(‘cke_contents cke_reset‘)判断条件,放在项目的common.js中。
$.fn.modal.Constructor.prototype.enforceFocus = function() { modal_this = this $(document).on(‘focusin.modal‘, function (e) { if (modal_this.$element[0] !== e.target && !modal_this.$element.has(e.target).length // Fix for CKEditor + Bootstrap IE issue with dropdowns on the toolbar // Adding additional condition ‘$(e.target.parentNode).hasClass(‘cke_contents cke_reset‘)‘ to avoid setting focus back on the modal window. && $(e.target.parentNode).hasClass(‘cke_contents cke_reset‘)) { modal_this.$element.focus() } }) };
bootstrap.js中enforceFocus函数代码
Modal.prototype.enforceFocus = function () { $(document) .off(‘focusin.bs.modal‘) // guard against infinite focus loop .on(‘focusin.bs.modal‘, $.proxy(function (e) { if (document !== e.target && this.$element[0] !== e.target && !this.$element.has(e.target).length) { this.$element.trigger(‘focus‘) } }, this)) }
this.$element表示modal对象。
IE11下,点击CKEditor,也触发了focusin.modal事件,if条件成立,bootstrap modal获取焦点,CKEditor下拉失去焦点,所以下拉出现闪现。
加了判断后,可以避免modal获取焦点,但好像modal一直都不会trigger了
IE11下,CKEditor在Bootstrap Modal中的下拉问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。