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 屏蔽按键效果与改变按键效果的示例代码
Dec 24 Javascript
js模拟C#中List的简单实例
Mar 06 Javascript
Javascript基础知识(一)核心基础语法与事件模型
Sep 29 Javascript
AngularJS实现表单手动验证和表单自动验证
Dec 09 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
Jan 06 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
Jun 07 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
Jul 14 Javascript
利用Node.js+Koa框架实现前后端交互的方法
Feb 27 Javascript
js 开发之autocomplete="off"在chrom中失效的解决办法
Sep 28 Javascript
js注册时输入合法性验证方法
Oct 21 Javascript
vue项目中使用Svg的方法
Oct 24 Javascript
JavaScript设计模式之观察者模式实例详解
Jan 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
浅谈Windows下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
解析coreseek for sphinx的使用
2013/06/21 PHP
PHP利用str_replace防注入的方法
2013/11/10 PHP
php实现的双色球算法示例
2017/06/20 PHP
基于jquery的跨域调用文件
2010/11/19 Javascript
JavaScript NodeTree导航栏(菜单项JSON类型/自制)
2013/02/01 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
2014/04/14 Javascript
使用jQuery的attr方法来修改onclick值
2014/07/07 Javascript
JavaScript让Textarea支持tab按键的方法
2015/06/26 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
强大Vue.js组件浅析
2016/09/12 Javascript
JS Canvas定时器模拟动态加载动画
2016/09/17 Javascript
jQuery实现页面顶部下拉广告
2016/12/30 Javascript
详解JavaScript对象的深浅复制
2017/03/30 Javascript
Vue结合SignalR实现前后端实时消息同步
2017/09/19 Javascript
nodejs之koa2请求示例(GET,POST)
2018/08/07 NodeJs
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
vue-父子组件和ref实例详解
2019/11/10 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
python修改操作系统时间的方法
2015/05/18 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
python2与python3的print及字符串格式化小结
2018/11/30 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
利用python实现逐步回归
2020/02/24 Python
python-xpath获取html文档的部分内容
2020/03/06 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
HTML5之web workers_动力节点Java学院整理
2017/07/17 HTML / CSS
Waterford美国官网:爱尔兰水晶制品品牌
2017/04/26 全球购物
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
超市活动计划书
2014/04/24 职场文书
机械设计制造及其自动化专业求职信
2014/06/17 职场文书
2014年教师节演讲稿范文
2014/09/10 职场文书
技术负责人岗位职责
2015/02/10 职场文书
公司安全管理制度范本
2015/08/05 职场文书
Python echarts实现数据可视化实例详解
2022/03/03 Python