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 相关文章推荐
jQuery getJSON()+.ashx 实现分页(改进版)
Mar 28 Javascript
js截取字符串的两种方法及区别详解
Nov 05 Javascript
JavaScript实现重置表单(reset)的方法
Apr 02 Javascript
JQuery给select添加/删除节点的实现代码
Apr 26 Javascript
JavaScript日期对象(Date)基本用法示例
Jan 18 Javascript
vue.js项目打包上线的图文教程
Nov 16 Javascript
微信小程序制作表格的方法
Feb 14 Javascript
关于JSON解析的实现过程解析
Oct 08 Javascript
jQuery操作选中select下拉框的值代码实例
Feb 07 jQuery
基于Echarts图表在div动态切换时不显示的解决方式
Jul 20 Javascript
jquery实现简单每周轮换的日历
Sep 10 jQuery
JavaScript中关于预编译、作用域链和闭包的理解
Mar 31 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来改写404错误页让你的页面更友好
2013/01/24 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
javascript 类方法定义还是有点区别
2009/04/15 Javascript
禁止IE用右键的JS代码
2013/12/30 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
详解Angualr 组件间通信
2017/01/21 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
nodeJS微信分享
2017/12/20 NodeJs
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
vuejs实现递归树型菜单组件
2018/01/13 Javascript
JS验证输入的是否是数字及保留几位小数问题
2018/05/09 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
解决vue项目router切换太慢问题
2020/07/19 Javascript
JS实现简易贪吃蛇游戏
2020/08/24 Javascript
react antd表格中渲染一张或多张图片的实例
2020/10/28 Javascript
[01:32]DOTA2上海特锦赛现场采访:最想COS的英雄
2016/03/25 DOTA
Python字符串逐字符或逐词反转方法
2015/05/21 Python
Python使用logging模块实现打印log到指定文件的方法
2018/09/05 Python
Python给定一个句子倒序输出单词以及字母的方法
2018/12/20 Python
Python Celery多队列配置代码实例
2019/11/22 Python
详解Django3中直接添加Websockets方式
2020/02/12 Python
基于python 将列表作为参数传入函数时的测试与理解
2020/06/05 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
简单介绍HTML5中的文件导入
2015/05/08 HTML / CSS
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
国际礼品店:GiftsnIdeas
2018/05/03 全球购物
Dogeared官网:在美国手工制作的珠宝
2019/08/24 全球购物
工商治理实习生的自我评价分享
2014/02/20 职场文书
高一新生军训方案
2014/05/12 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
2014年检验科工作总结
2014/11/22 职场文书
导游词怎么写
2015/02/04 职场文书
在职证明书模板
2015/06/15 职场文书