解决编辑框移动端不能获取焦点的问题 --- 针对 wangeditor 编辑器

解决编辑框移动端不能获取焦点的问题

移动端Vue项目,为了解决ios点击延迟的问题,引入了 fastClick,结果导致编辑器不能获得焦点~ 我卒

// 引入FastClick库
import FastClick from 'fastclick'
FastClick.attach(document.body)

//  解决编辑框移动端不能获取焦点的问题
FastClick.prototype.needsClick = function (target) {
  if (target.className.indexOf('w-e') !== -1) {
    return true
  }
  if (target.parentElement) {
   return this.needsClick(target.parentElement)
  }
}

记录

开始解决
按照官方的解决办法,增加一个‘needsClick’的类名 fastclick
于是我开始遍历编辑器所有子元素增加className,试过之后发现问题:

  1. 编辑器的内容都加上了类名,这就不太合适了叭 =.=
  2. 编辑器中还有交互后js生成的元素,比如上传等按钮,这些元素并不会加上类名

卒 ++

那我就只有选择一个编辑器自带的类名了,仔细斟酌(* ̄︶ ̄) 最后选了 “w-e”,只要包含这个类名前缀的元素全部都需要click效果
不过我又遇到问题:

if (target.className.indexOf('w-e') !== -1) {
    return true
  }

刚开始是只写 ☝ 这一个条件,后来测试发现编辑器的内容层级超超超多,这target根本满足不了大胃口
卒 ++

最后只有老实的递归一下,照顾到所有子元素

if (target.parentElement) {
   return this.needsClick(target.parentElement)
  }

最后,这种解决方法或许还有别的bug,我目前还没有遇到过

最最后感谢wangeditor项目的开源大佬,在编辑器的坑中救我一命~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值