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 屏蔽鼠标键盘的几段代码
Jan 02 Javascript
ie和firefox不兼容的解决方法集合
Apr 28 Javascript
QUnit jQuery的TDD框架
Nov 04 Javascript
容易被忽略的JS脚本特性
Sep 13 Javascript
微信公众平台开发教程(五)详解自定义菜单
Dec 02 Javascript
JavaScript实现瀑布流以及加载效果
Feb 11 Javascript
微信小程序实现简单input正则表达式验证功能示例
Nov 30 Javascript
JS实现匀速与减速缓慢运动的动画效果封装示例
Aug 27 Javascript
layui多iframe页面控制定时器运行的方法
Sep 05 Javascript
p5.js实现简单货车运动动画
Oct 23 Javascript
浅谈vue项目,访问路径#号的问题
Aug 14 Javascript
three.js着色器材质的内置变量示例详解
Aug 16 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按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
php实现encode64编码类实例
2015/03/24 PHP
yii数据库的查询方法
2015/12/28 PHP
使用symfony命令创建项目的方法
2016/03/17 PHP
PHP实现通过strace定位故障原因的方法
2018/04/29 PHP
js获取height和width的方法说明
2013/01/06 Javascript
简单介绍JavaScript的变量和数据类型
2015/06/03 Javascript
详细分析JavaScript函数定义
2015/07/16 Javascript
JS数组合并push与concat区别分析
2015/12/17 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
详解jQuery停止动画——stop()方法的使用
2016/12/14 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
实现一个 Vue 吸顶锚点组件方法
2019/07/10 Javascript
jQuery+ajax实现文件上传功能
2020/12/22 jQuery
Python实现HTTP协议下的文件下载方法总结
2016/04/20 Python
Python序列操作之进阶篇
2016/12/08 Python
Python3中简单的文件操作及两个简单小实例分享
2017/06/18 Python
Python 比较两个数组的元素的异同方法
2017/08/17 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
Python3匿名函数lambda介绍与使用示例
2019/05/18 Python
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
应届生体育教师自荐信
2013/10/03 职场文书
金融专业大学生自我评价
2014/01/09 职场文书
《在家里》教后反思
2014/03/01 职场文书
荷叶母亲教学反思
2014/04/30 职场文书
语文课外活动总结
2014/08/27 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
今日说法观后感
2015/06/08 职场文书
mysql优化
2021/04/06 MySQL
Python实现视频中添加音频工具详解
2021/12/06 Python
python游戏开发Pygame框架
2022/04/22 Python