Vue.js Vue 3:防止刷卡器用鼠标刷卡,而不是用手指刷卡

Vue.js Vue 3:防止刷卡器用鼠标刷卡,而不是用手指刷卡,vue.js,swiper,Vue.js,Swiper,在Swiper中使用鼠标时,我试图停止pointerdown事件,但在用手指触摸时,它仍应工作()我已经尝试使用属性“swiper.allowTouchMove”,但它也会禁用触摸功能。 当我还试图在@touchStart中停止传播以捕获鼠标时,它说该函数不存在(uncaughttypeerror:e.stopPropagation不是一个函数) 我真的很感激一些关于如何通过鼠标事件停用swip的建议 谢谢 这是我的代码: <template> <div> &

在Swiper中使用鼠标时,我试图停止pointerdown事件,但在用手指触摸时,它仍应工作()我已经尝试使用属性“swiper.allowTouchMove”,但它也会禁用触摸功能。

当我还试图在@touchStart中停止传播以捕获鼠标时,它说该函数不存在(uncaughttypeerror:e.stopPropagation不是一个函数)

我真的很感激一些关于如何通过鼠标事件停用swip的建议

谢谢

这是我的代码:

<template>
  <div>
    <swiper
        @touchStart.stop="touchMove" **NOT WORKING**
        virtual
        navigation
    >
      <swiper-slide
          v-for="(slideContent, index) in slides"
          :key="slideContent"
          :virtualIndex="index"
          v-html="slideContent"
      ></swiper-slide>
    </swiper>
  </div>
</template>

<script>
import SwiperCore, { Virtual, Navigation } from 'swiper';
import { Swiper, SwiperSlide } from 'swiper/vue';

import 'swiper/components/navigation/navigation.scss';
import 'swiper/swiper.scss';
import 'swiper/components/effect-fade/effect-fade.scss';
// scroll container, virtual slides, navigation
SwiperCore.use([Virtual, Navigation]);

export default {
  components: {
    Swiper,
    SwiperSlide,
  },

  setup() {
    console.log(this)
  },

  methods: {
    touchStart: function (swiper, event) {
      console.log(swiper)
      console.log(event.type)
    },

    touchMove: function (swiper, event) {
      swiper.slideNext(1)
      console.log('test')
    }
  },

  data() {
    // Create array with 1000 slides
    const slides = Array.from({ length: 1000 }).map(
        (el, index) => '<html><body>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam at viverra mauris. Nullam aliquet eros diam, eget cursus augue tincidunt vitae. Nullam ac tortor non justo fermentum maximus at ac diam. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam porttitor nisl ut turpis cursus, id dapibus diam vulputate. Vestibulum id ultricies nibh, id viverra urna. Maecenas venenatis sem vitae leo porta, sed euismod urna molestie. Nunc id dui orci. Donec fermentum maximus lorem, eu efficitur enim porttitor ut. Quisque non eros ac odio pulvinar rutrum eget feugiat sem. Integer ut sapien a justo commodo suscipit. Vestibulum eget feugiat libero. Nulla luctus semper quam, vitae cursus purus tincidunt posuere. Mauris ut tellus sed neque porta auctor quis sit amet ex. Nam elementum condimentum odio, at varius nisi faucibus id.\n' +
            '\n' +
            'Cras tincidunt, nunc a eleifend vestibulum, ligula velit ornare libero, a faucibus sapien ante consequat eros. Nam nunc ipsum, semper sit amet lorem in, lobortis blandit ligula. Proin mollis, libero blandit elementum bibendum, lorem lacus fringilla nulla, a viverra quam purus vitae ligula. Sed vel facilisis nulla. Suspendisse viverra nisl sed lectus scelerisque, bibendum blandit velit dapibus. Curabitur metus felis, tempor vel tincidunt a, volutpat in ex. Duis egestas dolor suscipit justo dapibus ornare. Praesent vehicula volutpat neque, in convallis eros placerat ac. Phasellus id ligula sagittis, finibus ante ut, fringilla lacus. Maecenas in magna id erat viverra semper. Duis quis facilisis tellus, a lobortis elit. Etiam ornare sodales malesuada.\n' +
            '\n' +
            'Duis porttitor vitae ipsum dictum auctor. Nullam eget velit eu mi laoreet sollicitudin vel quis tellus. Duis feugiat massa nec magna tristique, sit amet scelerisque justo dignissim. Phasellus tincidunt consequat efficitur. In mollis quam sed ullamcorper fringilla. Maecenas pulvinar risus vel purus congue semper. Etiam varius accumsan aliquet. Sed in dictum est, quis accumsan ante. Sed lobortis nisl ut dolor rhoncus suscipit. Quisque fermentum, ex et consequat convallis, nibh quam consequat lacus, nec mattis ligula massa vel augue. Aliquam erat volutpat. In fermentum nisl quis ultrices congue.\n' +
            '\n' +
            'Donec eleifend neque et purus bibendum, a consectetur magna volutpat. Nunc facilisis nisl dui, in facilisis turpis convallis fringilla. Phasellus ornare sapien nec urna sollicitudin auctor sed at massa. Ut felis magna, faucibus id posuere vel, iaculis id orci. Ut a odio ac lacus malesuada semper sit amet convallis libero. Cras at mollis orci. Maecenas est lorem, placerat eget vestibulum id, pretium venenatis enim.\n' +
            '\n' +
            'Ut mattis tincidunt eleifend. Ut eu lorem nibh. In sed risus velit. Vivamus in dapibus nunc, ultricies tincidunt ligula. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut vestibulum bibendum elementum. Nullam maximus, purus eget rhoncus eleifend, quam quam malesuada tortor, a consectetur dolor ex vitae felis. Sed justo urna, fermentum sit amet enim nec, tincidunt pellentesque leo. Sed sed tincidunt felis. Nulla sagittis, felis sed convallis vehicula, nunc justo luctus velit, eget finibus nulla est vel mi. Maecenas euismod turpis ut mi gravida tincidunt.</body></html>'
    );
    return {
      slides,
    };
  },
};
</script>

<style>
@media only screen and (max-width: 600px) {
  .swiper-button-prev::after, .swiper-button-next::after {
    visibility: hidden;
  }
}
@media only screen and (min-width: 601px) {
  .swiper-container {
    padding-left: 105px;
    padding-right: 105px;
  }
}

.swiper-slide-next, .swiper-slide-prev {
  visibility: hidden;
}

.swiper-container-horizontal > .swiper-navigation{
  position: absolute;
  bottom: 0;
}

.swiper-button-prev::after, .swiper-button-next::after {
  position: fixed;
  top: 50%;
}
</style>


从“swiper”导入SwipCore,{Virtual,Navigation};
从“Swiper/vue”导入{Swiper,SwiperSlide};
导入“swiper/components/navigation/navigation.scss”;
导入“swiper/swiper.scss”;
导入“swiper/components/effect fade/effect fade.scss”;
//滚动容器、虚拟幻灯片、导航
使用([Virtual,Navigation]);
导出默认值{
组成部分:{
游泳运动员,
SwiperSlide,
},
设置(){
console.log(这个)
},
方法:{
touchStart:功能(刷卡器、事件){
控制台日志(swiper)
console.log(event.type)
},
touchMove:功能(刷卡器、事件){
swiper.slideNext(1)
console.log('test')
}
},
数据(){
//创建包含1000张幻灯片的阵列
const slides=Array.from({length:1000}).map(
(el,索引)=>“Lorem ipsum door sit amet,concertetur adipiscing elite.Aliquam at viverra mauris.Nullam aliquet eros diam,eget cursus augue tincidut vitae.Nullam ac toror non justo breatum maximus at ac diam.Lorem ipsum door site amet,concertetur adipiscing elit.Aliquam porttitor niss ut turpis cursus,id dapitus diam.前庭蓖麻,我是维韦拉·乌尔纳。威尼斯大师,我是利奥·波尔塔,我是尤伊斯莫·乌尔纳·莫莱斯蒂。我是奥卡人,我是奥莱姆·马克西姆,我是欧莱姆·波尔蒂特。征服者,我是普尔维诺·鲁姆,我是福吉亚人。我是智者,我是共产主义者。我是自由的前庭。我是福吉亚人,我是福吉亚人我们在瓦里乌斯·尼西·福西伯斯庄园的一家拍卖行购买了一种新的调味品。莫里斯·乌特·特鲁斯在拍卖行出售了一种新的调味品。\n'+
“\n”+
“我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭。我的前庭,我的前庭,我的前庭。我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的前庭,我的节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖,节杖我是泰勒斯,一位精英。我是马莱苏阿达之家。\n'+
“\n”+
“两人都是拍卖人,一人都是拍卖人,一人都是拍卖人,一人都是拍卖人,一人都是贵族,一人都是贵族,一人都是拍卖人,一人都是拍卖人,一人都是拍卖人在这句格言中,我们的积累是在发酵过程中积累的,是在发酵过程中积累的,是在转化过程中积累的,是在转化过程中积累的,是在转化过程中积累的,是在转化过程中积累的,是在转化过程中积累的+
“\n”+
“Donec eleifend neque et purus bibendum,一个大漩涡的圣者。一个大漩涡。一个大漩涡。一个大漩涡。一个大漩涡。一个小漩涡。一个大漩涡。一个大漩涡。一个大漩涡。一个小漩涡。一个小漩涡。一个小漩涡。一个小漩涡。一个小漩涡。一个小漩涡。一个小漩涡。一个大漩涡。一个大漩涡。一个大漩涡最古老的地方,位于威尼斯前的前庭id。\n'+
“\n”+
“我们的马蒂斯·廷西德·埃利弗德,我们的奥勒姆·尼伯,我们的维利特,达比布斯·努克的维瓦姆斯,我们的叶舌,我们的奥奇斯·廷西德·马格尼,我们的母亲,我们的母亲,我们的母亲,我们的前庭,我们的母亲,我们的母亲,我们的母亲,我们的母亲,我们的母亲,我们的母亲,我们的母亲,我们的母亲,我们的母亲,我们的母亲,我们的母亲,我们的母亲。”s、 “我是乌尔纳,我是尼姆·内克,我是佩伦茨克·利奥,我是猫咪,我是人马,我是灵猫,我是卢克图斯·维利特,我是菲尼布斯·菲尼布斯·菲尼姆,我是梅塞纳·尤伊斯莫·特皮斯,我是孕妇。”
);
返回{
幻灯片,
};
},
};
@仅介质屏幕和(最大宽度:600px){
.swiper按钮上一个::之后,.swiper按钮下一个::之后{
可见性:隐藏;
}
}
@仅介质屏幕和(最小宽度:601px){
.swiper容器{
左侧填充:105px;
右侧填充:105px;
}
}
.swiper-slide-next、.swiper-slide-prev{
可见性:隐藏;
}
.swiper容器水平>.swiper导航{
位置:绝对位置;
底部:0;
}
.swiper按钮上一个::之后,.swiper按钮下一个::之后{
位置:固定;
最高:50%;
}