首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法在被动事件侦听器内部执行preventDefault操作

无法在被动事件侦听器内部执行preventDefault操作
EN

Stack Overflow用户
提问于 2017-02-08 07:08:33
回答 9查看 219.6K关注 0票数 75

我使用的是Framework7 sortable list,它工作得很好,只是它不会在列表改变时触发事件。

所以我尝试了一些内置的事件:

$('.sortable-handler').on('touchstart', function (e) {
    e.preventDefault();
    alert('touchstart');
});

$('.sortable-handler').on('touchmove', function (e) {
    e.preventDefault();
    console.log('touchmove');
});

$('.sortable-handler').on('touchcancel', function (e) {
    e.preventDefault();
    console.log('touchcancel');
});

$('.sortable-handler').mouseleave(function (e) {
    e.preventDefault();
    console.log('mouseleave');
});

。。但我得到的只是:

由于目标被视为被动,

无法在被动事件侦听器内部执行preventDefault操作。请参阅https://www.chromestatus.com/features/5093566007214080

我应该寻找哪个事件来获得每种排序的更新列表?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2017-02-08 18:01:51

当用户释放当前在新位置排序的元素时,要在Framework7中处理可排序列表,可以使用以下代码:

  $$('li').on('sortable:sort',function(event){
    alert("From " + event.detail.startIndex + " to " + event.detail.newIndex);
  });

小提琴:https://jsfiddle.net/0zf5w4y7/

票数 10
EN

Stack Overflow用户

发布于 2017-02-17 10:32:41

请参阅此blog post。如果您在每个touchstart上调用preventDefault,那么您还应该有一个禁止触摸滚动的CSS规则,如下所示

.sortable-handler {
  touch-action: none;
}
票数 95
EN

Stack Overflow用户

发布于 2019-04-14 16:56:03

对我来说

document.addEventListener("mousewheel", this.mousewheel.bind(this), { passive: false });

做到了( { passive: false }部分)。

票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42101723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档