博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS中div contenteditable=true无法输入 fastclick.js在点击一个可输入的div时,ios无法正常唤起输入法键盘...
阅读量:4603 次
发布时间:2019-06-09

本文共 1485 字,大约阅读时间需要 4 分钟。

原文地址:

前言

为了提升移动端click的响应速度,使用了fastclick.js这么一个库。

这个库导致这个可编辑的div被点击无法轻松的唤起输入法。

长按才能成功。div的一个contentEditable=”true”

解决方案

首先:再你的编辑器中增加一个class属性。我用的是quilljs

然后我们去main.js(我是基于vue在做)重写他原型上的needsClick方法(源码在229行)其实你也可以选择fark插件修改,放在本地库import FastClick from 'fastclick'// const $ = window.$// 点击延迟 因为和编辑器冲突, 重制起原型方法needsClickconst deviceIsWindowsPhone = navigator.userAgent.indexOf('Windows Phone') >= 0const deviceIsIOS = /iP(ad|hone|od)/.test(navigator.userAgent) && !deviceIsWindowsPhoneFastClick.prototype.needsClick = function (target) { // 下面这句 // 这是jq写法 // if ($(target).parents('.needsclick').length) return true while (target.tagName !== 'BODY') { // 放在本地插件库, 请将includes换成indexOf判断 if (target.className.includes('needsclick')) return true target = target.parentNode } switch (target.nodeName.toLowerCase()) { // Don't send a synthetic click to disabled inputs (issue #62) case 'button': case 'select': case 'textarea': if (target.disabled) { return true } break case 'input': // File inputs need real clicks on iOS 6 due to a browser bug (issue #68) if ((deviceIsIOS && target.type === 'file') || target.disabled) { return true } break case 'label': case 'iframe': // iOS8 homescreen apps can prevent events bubbling into frames case 'video': return true } return (/\bneedsclick\b/).test(target.className)}FastClick.attach(document.body)

转载于:https://www.cnblogs.com/taoquns/p/9662262.html

你可能感兴趣的文章
记一次header跨域与cookie共享
查看>>
根据屏幕高度自适应元素高度
查看>>
jQuery CSS 操作函数
查看>>
java配置环境变量
查看>>
TexturePacker 命令行用例
查看>>
list-style-type:decimal在IE中显示全是1的解析
查看>>
js保留整数
查看>>
.Net托管世界的应用程序域和线程-网摘
查看>>
大规模web服务读书笔记
查看>>
bzoj1112 [POI2008]砖块Klo
查看>>
解决form提交时又弹出页面的问题
查看>>
tmux 基础教程
查看>>
7.24 小结
查看>>
第二十七篇 名称空间与作用域
查看>>
Django打造在线教育平台_day_4: 页面(首页、登录)配置与登录功能实现
查看>>
日期时间选择器:datetimepicker
查看>>
WinForm 窗体
查看>>
Android ProgressDialog的使用
查看>>
类之间的关系练习1
查看>>
Oracle&JDBC&Hibernate知识总结
查看>>