博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
移动端swiper嵌iframe无法滑动的解决方案
阅读量:7237 次
发布时间:2019-06-29

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

最近项目有个需求,要把详情页改成多个页面轮播,本来小事一桩,但页面上有多个谷歌的内容广告时,调用谷歌的异步代码,所有内容广告会重叠到第一个slide的广告区域,无奈改成iframe终于解决了,但是又引来了本次蛋疼的问题,slide无法滑动。

经过一番谷歌百度,无非两种办法抄来抄去

1、给iframe设置 CSS pointer-events: none

2、在iframe内监听touch事件,根据手势调用swiper的方法滑动

这两种方法都存在问题

1、设置 pointer-events: none,iframe页面的事件都不会触发

2、监听iframe的touch事件判断手势,很麻烦,slide还不能随手指滑动,体验不好

难道就没有更好的解决办法了吗?

只要思想不滑坡,办法总比问题多

我们都知道,移动端touch事件是比click事件先触发的,顺着这个思路,我们可以给iframe设置 pointer-events: none,在touchStart里去掉,再在touchEnd里恢复,不就可以解决不能点击的问题了么?

const swiper = new Swiper(".swiper-container", {    on: {        touchStart(){            this.slides[this.activeIndex].querySelector("iframe").style.pointerEvents = "none";        },        touchEnd(){            // 由于touchEnd比click先触发,所以要等click执行完以后,再恢复pointer-events            setTimeout(()=>{                this.slides[this.activeIndex].querySelector("iframe").style.pointerEvents = "auto";            }, 1000);        }    }});复制代码

swiper 4.5.0 安卓移动端测试OK

转载于:https://juejin.im/post/5c8729ef6fb9a04a0e2e0864

你可能感兴趣的文章
Tomcat部署项目注意事项,谨防闪退
查看>>
Nacos Committer 张龙:Nacos Sync 的设计原理和规划
查看>>
C++TR1学习笔记之tuple
查看>>
"."(点)与"/"(斜杠)在java中的意思
查看>>
C# vs Java:C# 五个不可替代的特性瞬间秒杀 Java
查看>>
软件架构杂谈(三) --- APNS
查看>>
Realm Java的学习、应用、总结
查看>>
列表生成器输出九九乘法表
查看>>
Java 线程状态之 TIMED_WAITING
查看>>
samba基础知识
查看>>
从构建分布式秒杀系统聊聊Disruptor高性能队列
查看>>
宏开关的使用
查看>>
DELL 720添加固态硬盘,给ESXi主机添加SSD缓存
查看>>
PPP验证(PAP和CHAP)
查看>>
linux的sed工具使用介绍
查看>>
Citrix XenMobile 9.0 发布
查看>>
Citrix StoreFront架构
查看>>
Atom 编辑器 PHP 调试配置
查看>>
我的友情链接
查看>>
java web程序 利用myeclipse软件打包部署
查看>>