fastclick偶遇vue-clipboard2或clipboardJS ios无法复制

fastclick偶遇vue-clipboard2或clipboardJS ios无法复制

背景

在集团app内的移动端页面,使用vue-clipboard2发现ios端无法复制,改用clipboardJS也不能复制。

问题排查

安卓是可以的,但是ios怎么也复制不了。

经过长时间的问题排查以及资料查询,最终发现,是由于使用了fastclick,而fastclick构造了自定义事件提前触发。

ios无法触发复制,是因为系统剪贴板命令需要原生click触发。

解决问题

在使用fastclick库的情况,需要给元素添加classname="needsclick",默认让这个元素走原生click。

原理如下,fastclick库源码:

pic

pic

pic

后来仔细看了文档,已经明确的写明,自定义事件是无法访问系统粘贴板的。

A synthetic paste event must not give a script access to data on the real system clipboard. Synthetic cut and copy events must not modify data on the system clipboard. Synthetic paste events do not have any default action. Even if such an event is dispatched in an editable context, the implementation must not insert any data.

相关资料

fastclick.js 其它坑也需要注意。 iOS11.3 fastclick.js相关bug

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦