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 15 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
Jul 20 Javascript
IE下双击checkbox反应延迟问题的解决方法
Mar 27 Javascript
JS控制弹出新页面窗口位置和大小的方法
Mar 02 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
Jun 19 Javascript
详解JavaScript对象类型
Jun 16 Javascript
Angularjs 与 bower安装和使用详解
May 11 Javascript
简单介绍react redux的中间件的使用
Apr 06 Javascript
AngularJS发送异步Get/Post请求方法
Aug 13 Javascript
浅谈JavaScript闭包
Apr 09 Javascript
深入解读Node.js中的koa源码
Jun 17 Javascript
keep-Alive搭配vue-router实现缓存页面效果的示例代码
Jun 24 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函数serialize()与unserialize()的使用方法
2014/08/19 PHP
PHP session会话操作技巧小结
2016/09/27 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
jQuery插件原来如此简单 jQuery插件的机制及实战
2012/02/07 Javascript
jquery 滚动条事件简单实例
2013/07/12 Javascript
js中return false(阻止)的用法
2013/08/14 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
JS中script标签defer和async属性的区别详解
2016/08/12 Javascript
jQuery中fadein与fadeout方法用法示例
2016/09/16 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
2016/10/30 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
2018/12/06 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
Python3实现统计单词表中每个字母出现频率的方法示例
2019/01/28 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
python 协程中的迭代器,生成器原理及应用实例详解
2019/10/28 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
2020/03/30 Python
phpquery中文手册
2021/03/18 PHP
Schecker荷兰:狗狗用品和配件
2019/06/06 全球购物
Farfetch阿联酋:奢侈品牌时尚购物平台
2019/07/26 全球购物
酒店总经理助理岗位职责
2014/02/01 职场文书
元旦活动感言
2014/03/08 职场文书
2014教师党员自我评议总结
2014/09/19 职场文书
2014民事授权委托书范本
2014/09/29 职场文书
计生办班子群众路线教育实践活动个人对照检查材料思想汇报
2014/10/04 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
超市员工管理制度
2015/08/06 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
Go Plugins插件的实现方式
2021/08/07 Golang
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python
Python 避免字典和元组的多重嵌套问题
2022/07/15 Python