我正在编写一个手势/动作库,它还管理事件侦听器和触发。我已经实现了我的库,通过一个API支持手势对象设置被动侦听器,该API如下:this。在('touchstart.passive',this.startHandler,{reject:errorHandler})上
。My lib支持多种手势,设置多个听众,包括被动和非被动。lib将确保最多只有一个真正的侦听器连接到DOM。因此,我们最多可以有2个touchstart监听器,其中一个是被动监听器,另一个不是。
我的问题和问题是,我无法检测接收到的事件是否附加了{被动: true}
选项。我认为我可以在本机事件对象上使用可取消的
属性,因为在被动事件上调用预防默认()
是错误的。但是可取消属性始终为true,即使浏览器会抛出一个错误。
我已经阅读了关于事件监听器的whatwgdom标准,并在Firefox和Chrome中进行了一些测试,但找不到关于如何区分这两种类型事件的任何信息。
这对我的库很重要,因为被动事件侦听器是用“.passive”
后期修复程序键入的,例如“touchstart.passive”
与“touchstart”
。
如何检查被动选项接收的DOM事件,以便触发正确的内部侦听器?
编辑
目前,我的附加侦听器流程的要点是:
function eventNotifier(event) {
this.fire(event.cancelable ? event.type : event.type + '.passive', new GestureEvent(event))
}
addEvent(el, realEventName, eventNotifier, options)
nativeListeners.set(eventName, 1)
function addEvent (el, type, listener, options) {
el.addEventListener(type, listener, options || true)
}
其中,nativellisteners
是跟踪真实事件侦听器的映射
写一个if语句来检查侦听器是否附加了“。被动”。
在调用event.preventDefault();
之后,可以测试event.defaultPrevent
的值。如果调用是被动事件,浏览器会抛出警告/错误,但是它不会停止javascript的执行。因此,以下措施应该行得通:
document.addEventListener('touchstart', function(event) {
event.preventDefault();
if (event.defaultPrevented) {
// This is not a passive event
} else {
// This is a passive event
}
}, { passive: true });
在致力于提高渐进式web应用程序的性能时,我遇到了一个新功能,我发现很难理解这个概念。 什么是被动事件侦听器,在我们的项目中需要它吗?
问题内容: 这是我的问题:是否可以通过某种方式检查是否存在动态附加的事件侦听器?或者如何检查DOM中“onclick”(?)属性的状态?但是没有运气。这是我的html: 然后在Javascript中,将动态创建的事件侦听器附加到第二个链接: 该代码运行良好,但是我所有检测该附加侦听器的尝试均失败: 如果单击“为2添加onclick”,然后单击“[链接2]”,则事件触发良好,但“测试链接2”始终报告
问题内容: 在努力提高渐进式Web应用程序的性能时,我遇到了一项新功能,但我很难理解这一概念。 在我们的项目中有什么以及有什么需要? 问题答案: 被动事件侦听器是一种新兴的网络标准,是Chrome51附带的一项新功能,可极大提高滚动性能。 通过消除滚动以阻止触摸和滚轮事件监听器的需求,它使开发人员可以选择更好的滚动性能。 问题: 所有现代浏览器都具有线程化滚动功能,即使在运行昂贵的JavaScri
单击选择元素显示此警告: [违规]将非被动事件侦听器添加到滚动阻止“鼠标滚轮”事件。将事件处理程序标记为“被动”以使页面更加响应。 问题是,这也扩大了谷歌浏览器中HTML页面的高度。在Chrome版本59.0中测试。3071.86(官方版本)(64位)在firefox中不会出现这种情况。 简单代码:https://jsfiddle.net/gurigraphics/2399mnyb 如果自定义滚动
问题:我正在尝试为我的应用程序创建一个组件,其他组件将使用该组件渲染表。它可能有三个可能的单元格值: 文本 HTML 组成部分 我能够呈现上面所有的值,但是我在绑定侦听器时遇到了困难。我试图实现的是这样的:传递一个要绑定到组件的方法和事件,表应该将其绑定到相应的单元格。例如: 表JSON 表组件 上面只是我正在尝试的一个片段,表循环通过传递的对象并相应地呈现。 我已经试过了 因此,解决方案1 因此
在用java编写Minecraft插件时,您可以创建一个事件监听器方法,并将其命名为任意名称,但您必须传入事件监听者的类,例如: 我只是想知道,如果Bukkit API中的任何类都不知道该方法的名称,那么该方法是如何在“幕后”执行的?我希望我能很好地解释自己。谢谢