IE11下CKEditor在Bootstrap Modal中下拉问题的解决


Posted in Javascript onSeptember 25, 2019

最近在项目中需要在Bootstrap Modal弹出框中载入CKEditor。

初始化CKEditor以后,在IE11下,格式/字体/颜色的下拉会闪现一下后就消失,但在chrome和firefox下没问题。

主要原因是IE11下,点击CKEditor,触发了focusin.modal事件,原modal enforceFocus函数的if条件成立,bootstrap modal获取焦点,CKEditor下拉失去焦点,所以下拉出现闪现。

Google了以后找到了一个解决方案

这个解决方案中,加了判断后,可以避免modal获取焦点,但好像modal一直都不会trigger了。

我做了一下修改,以下代码是在原modal enforceFocus函数的基础上添加了!$(e.target.parentNode).closest(".cke").length判断条件,也就是说在原判断条件+未点击在CKEditor上,则modal获取焦点。

代码的执行顺序是jQuery、bootstrap再执行此段代码。

$.fn.modal.Constructor.prototype.enforceFocus = function() {
 $(document)
  .off('focusin.bs.modal')
  .on('focusin.bs.modal', $.proxy(function (e) {
  if (document !== e.target &&
   this.$element[0] !== e.target &&
   !this.$element.has(e.target).length &&
   !$(e.target.parentNode).closest(".cke").length) {
   
   this.$element.trigger('focus')
  }
  }, this))
};

在项目中测试了一下未发现问题。 

附 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对象。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
通过修改referer下载文件的方法
May 11 Javascript
js中for in的用法示例解析
Dec 25 Javascript
JS动态增加删除UL节点LI及相关内容示例
May 21 Javascript
JS实现为表格动态添加标题的方法
Mar 31 Javascript
在Node.js中使用HTTP上传文件的方法
Jun 23 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
Oct 10 Javascript
jQuery按需加载轮播图(web前端性能优化)
Feb 17 Javascript
Vue.js使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
May 10 Javascript
仿京东快报向上滚动的实例
Dec 13 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
Apr 26 jQuery
vue开发环境配置跨域的方法步骤
Jan 16 Javascript
js实现ajax的用户简单登入功能
Jun 18 Javascript
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
Sep 25 #Javascript
vue+axios实现post文件下载
Sep 25 #Javascript
vue + axios get下载文件功能
Sep 25 #Javascript
layer.open组件获取弹出层页面变量、函数的实例
Sep 25 #Javascript
jquery中attr、prop、data区别与用法分析
Sep 25 #jQuery
axios实现文件上传并获取进度
Mar 25 #Javascript
Layer+Echarts构建弹出层折线图的方法
Sep 25 #Javascript
You might like
php使用codebase生成随机数
2014/03/25 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
PHP变量赋值、代入给JavaScript中的变量
2015/06/29 PHP
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
php实现的中文分词类完整实例
2017/02/06 PHP
List the UTC Time on a Computer
2007/06/11 Javascript
jquery控制左右箭头滚动图片列表的实例
2013/05/20 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
jQuery标签替换函数replaceWith()的使用例子
2014/08/28 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
2016/06/06 Javascript
Bootstrap插件全集
2016/07/18 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
jquery插入兄弟节点的操作方法
2016/12/07 Javascript
详解能在多种前端框架下使用的表格控件
2017/01/11 Javascript
node.js中cluster的使用教程
2017/06/09 Javascript
AngularJS select设置默认值的实现方法
2017/08/25 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
2018/09/26 Javascript
详解react阻止无效重渲染的多种方式
2018/12/11 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
layui插件表单验证提交触发提交的例子
2019/09/09 Javascript
vue实现树形结构样式和功能的实例代码
2019/10/15 Javascript
python解析xml文件实例分析
2015/05/27 Python
python获取当前运行函数名称的方法实例代码
2017/04/06 Python
Pandas实现数据类型转换的一些小技巧汇总
2018/05/07 Python
Python+selenium 获取一组元素属性值的实例
2018/06/22 Python
python将数据插入数据库的代码分享
2020/08/16 Python
前端隐藏出边界内容的实现方法
2016/04/14 HTML / CSS
linux面试题参考答案(5)
2016/11/05 面试题
入党自我鉴定范文
2013/10/04 职场文书
消防先进事迹材料
2014/02/10 职场文书
《吃水不忘挖井人》教学反思
2014/04/15 职场文书
创业计划之特色精品店
2019/08/12 职场文书
Redis 常见使用场景
2021/08/30 Redis
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
2022/01/18 HTML / CSS
python实现商品进销存管理系统
2022/05/30 Python