无法阻止被动事件监听器jQuery Mobile中的默认
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法阻止被动事件监听器jQuery Mobile中的默认相关的知识,希望对你有一定的参考价值。
我已经使用jQuery Mobile v1.5.0在刷卡上打开菜单所有工作正常但是这个错误总是存在,我已经尝试添加addEventListener示例:
// open menu on swipe to right
$(document).on('swiperight', function(e) {
document.addEventListener("swiperight", e.preventDefault(), {passive: false} );
e.preventDefault()
$('.menu').addClass('active');
});
但错误仍然存在
Unable to preventDefault inside passive event listener due to target being treated as passive.
码:
// open menu on swipe to right
$(document).on('swiperight', function(e) {
e.preventDefault()
$('.menu').addClass('active');
});
答案
无需添加另一个eventListener
。可以使用CSS解决此错误。将touch-action: none;
添加到您正在滑动的容器中。
这是一个使用外部JQM Panel作为全局导航菜单的演示:
$(document)
.on('swiperight', '#page-acura, #page-audi, #page-bmw', function(e) {
$("#panel").panel("open");
})
.ready(function() {
$("#panel").panel({theme: "a", display: "overlay"}).enhanceWithin();
});
.ui-page,
.ui-panel,
.ui-panel-wrapper,
.ui-panel-dismiss {
touch-action: none;
}
h1, h2, h3, h4, h5, h6, p {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JQM 1.5.0 RC1 Panel Menu</title>
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="user-scalable=no, initial-scale=1.0001, maximum-scale=1.0001, width=device-width, minimal-ui shrink-to-fit=no">
<meta http-equiv="cleartype" content="on">
<link rel="stylesheet" href="https://code.jquery.com/mobile/1.5.0-rc1/jquery.mobile-1.5.0-rc1.min.css" />
<script src="https://code.jquery.com/jquery-3.4.0.min.js"></script>
<script src="https://code.jquery.com/mobile/1.5.0-rc1/jquery.mobile-1.5.0-rc1.min.js"></script>
</head>
<body>
<div data-role="page" id="page-acura">
<div class="ui-toolbar-header ui-body-a">
<h2 class="ui-toolbar-title">Acura</h2>
</div>
<div role="main" class="ui-content">
<p>Acura content goes here.</p>
</div>
<div class="ui-toolbar-footer ui-toolbar-footer-fixed ui-body-a">
<h2 class="ui-toolbar-title">Footer</h2>
</div>
</div>
<div data-role="page" id="page-audi">
<div class="ui-toolbar-header ui-body-a">
<h2 class="ui-toolbar-title">Audi</h2>
</div>
<div role="main" class="ui-content">
<p>Audi content goes here.</p>
</div>
<div class="ui-toolbar-footer ui-toolbar-footer-fixed ui-body-a">
<h2 class="ui-toolbar-title">Footer</h2>
</div>
</div>
<div data-role="page" id="page-bmw">
<div class="ui-toolbar-header ui-body-a">
<h2 class="ui-toolbar-title">BMW</h2>
</div>
<div role="main" class="ui-content">
<p>BMW content goes here.</p>
</div>
<div class="ui-toolbar-footer ui-toolbar-footer-fixed ui-body-a">
<h2 class="ui-toolbar-title">Footer</h2>
</div>
</div>
<div data-role="panel" id="panel">
<ul data-role="listview" data-icon="false" data-inset="true">
<li><a href="#page-acura">Acura</a></li>
<li><a href="#page-audi">Audi</a></li>
<li><a href="#page-bmw">BMW</a></li>
</ul>
</div>
</body>
</html>
以上是关于无法阻止被动事件监听器jQuery Mobile中的默认的主要内容,如果未能解决你的问题,请参考以下文章
由于目标被视为被动,无法在被动事件侦听器中阻止默认值?为啥滚动时出现此错误?
react-datepicker“无法阻止被动事件侦听器调用中的默认值”
[Violation] 向 Angular 4 项目中的滚动阻止“touchstart”事件添加非被动事件侦听器是啥意思?