m***@wyou.ltd
m***@wyou.ltd
  • 发布:2024-04-08 15:09
  • 更新:2024-04-08 15:48
  • 阅读:108

【报Bug】nvue使用swiper,swiper-item嵌套iframe,iframe所在区域,无法滑动问题。

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 13.0.1

HBuilderX类型: 正式

HBuilderX版本号: 3.6.18

浏览器平台: Chrome

浏览器版本: 123.0.6312.87

项目创建方式: HBuilderX

示例代码:
//这么写,iframe包含区域不能滑动;将下方注释代码加上,降低iframe的层级,  
//虽包含区域可以滑动了,但src加载的若是本地html,其中包含第三方播放器等需要交互组件,则无法满足交互需求。  
<swiper style="width: 500px;height: 300px;">    
            <swiper-item>    
                <iframe src="https://www.tbjh-health.com"></iframe>    
            </swiper-item>    
            <swiper-item>    
                <iframe src="https://www.tbjh-health.com"></iframe>    
            </swiper-item>    
            <swiper-item>    
                <iframe src="https://www.tbjh-health.com"></iframe>    
            </swiper-item>    
</swiper>  

<style>  
//降低层级  
/* iframe {  
        z-index: -1!important;  
    } */  
</style>  

操作步骤:

看上方注释说明。

预期结果:

使用iframe能直接滑动。

实际结果:

iframe区域不能滑动;降低iframe层级,虽能滑动,但又无法和iframe加载页面交互。

bug描述:

nvue使用swiper,swiper-item嵌套iframe,iframe所在区域,无法滑动。
如果降低iframe的层级,则能滑动,但是iframe上的网址无法点击、触摸。

2024-04-08 15:09 负责人:无 分享
已邀请:
爱豆豆

爱豆豆 - 办法总比困难多

iframe是被swiper包含的 是在同一个视图内的 要么swiper能滑动 要么iframe能滑动 只能二选一
你给swiper加上disable-touch这个属性 试试iframe内是否可以点击

  • m***@wyou.ltd (作者)

    这个属性加上,类似降低swiper的层级,iframe当然可以点击,但就不能滑动了。现在的需求是既需要swiper的滑动,还需要iframe能交互。移动端用其他组件能实现,但h5端,交互事件冒泡貌似被阻止了。

    2024-04-08 16:01

  • 爱豆豆

    回复 m***@wyou.ltd: 对 所以你只能二选一 如果你的iframe内容不需要左右滑动的话 你可以试试监听触摸事件 当用户左右移动的时候 关闭disable-touch 手指松开后在打开disable-touch 或者用户左右滑动时直接修改swiper 的current实现切换效果

    2024-04-08 16:08

  • m***@wyou.ltd (作者)

    回复 爱豆豆: 试过,并不可行。h5端的滑动监听touch之类的貌似失效,只在移动端可用。swiper就算禁用滑动,也获取不到触摸事件,后面的逻辑完成不了。

    2024-04-09 17:06

要回复问题请先登录注册