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 相关文章推荐
js 数组实现一个类似ruby的迭代器
Oct 27 Javascript
javascript基础第一章 JavaScript与用户端
Jul 22 Javascript
JS 自定义带默认值的函数
Jul 21 Javascript
jquery创建并行对象或者合并对象的实现代码
Oct 10 Javascript
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
Oct 11 Javascript
avalon js实现仿微博拖动图片排序
Aug 14 Javascript
D3.js进阶系列之CSV表格文件的读取详解
Jun 06 Javascript
BootStrap数据表格实例代码
Sep 13 Javascript
node微信开发之获取access_token+自定义菜单
Mar 17 Javascript
浅谈Angular单元测试总结
Mar 22 Javascript
JavaScript实现省市区三级联动
Feb 13 Javascript
JavaScript对象访问器Getter及Setter原理解析
Dec 08 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
模仿OSO的论坛(一)
2006/10/09 PHP
PHP获取一年中每个星期的开始和结束日期的方法
2015/02/12 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
JavaScript 垃圾回收机制分析
2013/10/10 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
AngularJS中$interval的用法详解
2016/02/02 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
微信小程序之前台循环数据绑定
2017/08/18 Javascript
vue 详情跳转至列表页实现列表页缓存
2019/03/27 Javascript
javascript+css实现进度条效果
2020/03/25 Javascript
[41:52]2018DOTA2亚洲邀请赛3月29日 小组赛A组 TNC VS OpTic
2018/03/30 DOTA
Tornado服务器中绑定域名、虚拟主机的方法
2014/08/22 Python
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
2015/02/04 Python
python和ruby,我选谁?
2017/09/13 Python
使用requests库制作Python爬虫
2018/03/25 Python
python字符串与url编码的转换实例
2018/05/10 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
2019/06/14 Python
TensorFlow索引与切片的实现方法
2019/11/20 Python
详解canvas drawImage()方法绘制图片不显示的问题
2018/10/08 HTML / CSS
美国网上购买眼镜:Eyeconic
2017/07/29 全球购物
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
如何执行一个shell程序
2012/11/23 面试题
中餐厅主管的职责范文
2014/02/04 职场文书
社区健康教育实施方案
2014/03/18 职场文书
校园文明倡议书
2014/05/16 职场文书
质量月口号
2014/06/20 职场文书
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
网络妈妈观后感
2015/06/08 职场文书
车间班组长竞聘书
2015/09/15 职场文书
《别在吃苦的年纪选择安逸》读后感3篇
2019/11/30 职场文书
python 判断字符串当中是否包含字符(str.contain)
2022/06/01 Python