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 相关文章推荐
jquery下操作HTML控件的实现代码
Jan 12 Javascript
javascript 模拟坦克大战游戏(html5版)附源码下载
Apr 08 Javascript
javascript学习笔记之10个原生技巧
May 21 Javascript
javascript中解析四则运算表达式的算法和示例
Aug 11 Javascript
基于jQuery实现的文字按钮表单特效整理
Dec 07 Javascript
通过JS判断联网类型和连接状态的实现代码
Apr 01 Javascript
微信小程序 页面跳转传参详解
Oct 28 Javascript
微信小程序 开发工具快捷键整理
Oct 31 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
Feb 21 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
Sep 11 Javascript
Vue2实时监听表单变化的示例讲解
Aug 30 Javascript
ES6基础之展开语法(Spread syntax)
Feb 21 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应用提速面面观
2006/10/09 PHP
PHP+javascript模拟Matrix画面
2006/10/09 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
2014/05/10 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
php截取字符串函数分享
2015/02/02 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
JavaScript的面向对象(一)
2006/11/09 Javascript
JavaScript 基础问答三
2008/12/03 Javascript
JavaScript 空位补零实现代码
2010/02/26 Javascript
来自qq的javascript面试题
2010/07/24 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
JavaScript实现页面5秒后自动跳转的方法
2015/04/16 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
JS动态给对象添加事件的简单方法
2016/07/19 Javascript
微信js-sdk地理位置接口用法示例
2016/10/12 Javascript
Bootstrap表单制作代码
2017/03/17 Javascript
浅谈node中的exports与module.exports的关系
2017/08/01 Javascript
微信小程序 本地图片按照屏幕尺寸处理
2017/08/04 Javascript
详解vue mint-ui源码解析之loadmore组件
2017/10/11 Javascript
layui 表格的属性的显示转换方法
2018/08/14 Javascript
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
Python+MongoDB自增键值的简单实现
2016/11/04 Python
将python代码和注释分离的方法
2018/04/21 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
python实现同一局域网下传输图片
2020/03/20 Python
python爬虫基础知识点整理
2020/06/02 Python
MSC邮轮官方网站:加勒比海、地中海和世界各地的假期
2018/08/27 全球购物
职业规划书如何设计?
2014/01/09 职场文书
探矿工程师自荐信
2014/01/24 职场文书
《老王》教学反思
2014/02/23 职场文书
《蜗牛的奖杯》教后反思
2014/04/24 职场文书
电气自动化求职信
2014/06/24 职场文书
2016暑期社会实践新闻稿
2015/11/25 职场文书
MySQL学习必备条件查询数据
2022/03/25 MySQL
JS前端宏任务微任务及Event Loop使用详解
2022/07/23 Javascript