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 相关文章推荐
xml 与javascript结合的问题解决方法
Mar 24 Javascript
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
Oct 29 Javascript
JS自动缩小超出大小的图片
Oct 12 Javascript
可在线编辑网页文字效果代码(单击)
Mar 02 Javascript
angularjs指令中的compile与link函数详解
Dec 06 Javascript
JavaScript中Array的实用操作技巧分享
Sep 11 Javascript
jQuery.cookie.js使用方法及相关参数解释
Mar 06 Javascript
微信小程序 在线支付功能的实现
Mar 14 Javascript
Vue列表页渲染优化详解
Jul 24 Javascript
解决linux下node.js全局模块找不到的问题
May 15 Javascript
axios向后台传递数组作为参数的方法
Aug 11 Javascript
微信小程序换肤功能实现代码(思路详解)
Aug 25 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
我的论坛源代码(四)
2006/10/09 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
2016/12/08 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
2017/04/15 PHP
PHP读取目录树的实现方法分析
2019/03/22 PHP
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
svg动画之动态描边效果
2017/02/22 Javascript
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
2018/01/26 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
微信小程序实现文字无限轮播效果
2018/12/28 Javascript
vue.js实现二级菜单效果
2019/10/19 Javascript
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
2020/02/19 Javascript
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
python打开网页和暂停实例
2014/09/30 Python
pygame学习笔记(5):游戏精灵
2015/04/15 Python
python爬虫之百度API调用方法
2017/06/11 Python
python实现播放音频和录音功能示例代码
2018/12/30 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
2020/09/22 Python
详解Python3 中的字符串格式化语法
2020/01/15 Python
keras 读取多标签图像数据方式
2020/06/12 Python
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
Python里面如何实现tuple和list的转换
2012/06/13 面试题
超市优秀员工获奖感言
2014/08/15 职场文书
介绍信如何写
2015/01/31 职场文书
博士导师推荐信
2015/03/25 职场文书
Python基础之进程详解
2021/05/21 Python
Pygame Event事件模块的详细示例
2021/11/17 Python
yolov5返回坐标的方法实例
2022/03/17 Python