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 相关文章推荐
javascript 图片上一张下一张链接效果代码
Mar 12 Javascript
jQuery Autocomplete自动完成插件
Jul 17 Javascript
基于jQuery实现选取月份插件附源码下载
Dec 28 Javascript
谈谈对JavaScript原生拖放的深入理解
Sep 20 Javascript
Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法
Feb 17 Javascript
Angular实现购物车计算示例代码
Feb 21 Javascript
利用Javascript开发一个二维周视图日历
Dec 14 Javascript
Vue 子组件与数据传递问题及注意事项
Jul 11 Javascript
JS实现提示效果弹出及延迟隐藏的功能
Aug 26 Javascript
微信分享invalid signature签名错误踩过的坑
Apr 11 Javascript
vue中用 async/await 来处理异步操作
Jul 18 Javascript
Vue 样式切换及三元判断样式关联操作
Aug 09 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设置编码格式的方法
2013/03/05 PHP
php中用memcached实现页面防刷新功能
2014/08/19 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
2016/09/09 PHP
php实现的XML操作(读取)封装类完整实例
2017/02/23 PHP
js中的异常处理try...catch使用介绍
2013/09/21 Javascript
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
JavaScript编写推箱子游戏
2015/07/07 Javascript
纯javascript判断查询日期是否为有效日期
2015/08/24 Javascript
javascript bom是什么及bom和dom的区别
2015/11/26 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
使用jQuery制作Web页面遮罩层插件的实例教程
2016/05/26 Javascript
jQuery基于排序功能实现上移、下移的方法
2016/11/26 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
JavaScript实现两个select下拉框选项左移右移
2017/03/09 Javascript
javascript实现非常简单的小数取整功能示例
2017/06/13 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
2018/08/25 Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
2019/02/21 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
2019/04/30 Javascript
javascript之分片上传,断点续传的实际项目实现详解
2019/09/05 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
2020/05/29 Javascript
解决Element中el-date-picker组件不回填的情况
2020/11/07 Javascript
Python中用Decorator来简化元编程的教程
2015/04/13 Python
python实现向ppt文件里插入新幻灯片页面的方法
2015/04/28 Python
用Python编写一个每天都在系统下新建一个文件夹的脚本
2015/05/04 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
2016/08/28 Python
Python 爬虫模拟登陆知乎
2016/09/23 Python
使用Python操作excel文件的实例代码
2017/10/15 Python
selenium获取当前页面的url、源码、title的方法
2019/06/12 Python
python日期相关操作实例小结
2019/06/24 Python
简单了解python关系(比较)运算符
2019/07/08 Python
解决TensorFlow调用Keras库函数存在的问题
2020/07/06 Python
HTML5等待加载动画效果
2017/07/27 HTML / CSS
投标承诺书怎么写
2014/05/24 职场文书
消夏晚会主持词
2015/06/30 职场文书
Pandas搭配lambda组合使用详解
2022/01/22 Python