我正在尝试了解如何在处理触摸和点击事件时使用混合设备,但我找不到任何真正有效的解决方案(我没有混合设备,因此无法直接测试,但由于失败的尝试甚至不能在常规设备上工作,我假设它们在混合设备上也不能工作)。
问题在于,在混合设备上,您必须同时进行触摸和点击事件绑定,而不会触发函数两次。 因此,如果您查看我的失败尝试(2和3),您会发现我绑定了touchend
和click
,但似乎存在某种语法错误或其他错误,因为这导致事件实际上不会触发。
第一个解决方案很好用,但那只是在我使用事件触发类型中的其中一个时。
我到目前为止尝试的:
1 - 在触摸设备和点击设备上都有效:
_renderer.listenGlobal('document', 'ontouchstart' in window ? 'touchend' : 'click', (e) => {
console.log('works');
});
2 - 不支持触摸或点击设备:
_renderer.listenGlobal('document', 'touchend click', (e) => {
console.log('works');
e.stopPropagation();
});
3 - 不触发触摸或点击设备的事件:
_renderer.listenGlobal('document', 'touchend, click', (e) => {
console.log('works');
e.stopPropagation();
});
如您所见,第一个示例涵盖了2/3的设备类型,而其他示例则涵盖了0个。
我该如何确保我的函数在每个设备上都能正常运行?