jQuery和纯Javascript中的指针事件绑定之间的区别
Difference between pointer events binding in jQuery and plain Javascript
我一直在尝试了解不同的指针事件(触摸、鼠标(如何在各种浏览器/各种设备上触发。为此,我写了一个小网页来测试 http://tstr.29pixels.net 事件。
几周后,我在 http://mozilla.github.io/mozhacks/touch-events/event-listener.html 遇到了Mozilla的事件侦听器测试页面,它产生了非常不同的结果(我看到触发的事件没有显示在我原来的测试工具中(。
两个网站都使用不同风格的绑定事件,所以我很想知道,绑定这些事件有什么区别?
例如,使用 Chrome 拿起您的平板电脑/智能手机,然后尝试点击我网站上的按钮。在大多数情况下,会触发两个事件 - touchstart 和 touchend(偶尔会触发 touchmove(。然后尝试Mozilla的工具。还有更多(甚至包括点击(。
我的绑定:
$("#button").on('mouseenter mouseleave ... mousemove click', function(e){
...
}
Mozilla 绑定:
var events = ['MSPointerDown', 'MSPointerUp', ... , 'MSPointerCancel'];
var b = document.getElementById('button');
for (var i=0; i<events.length; i++) {
b.addEventListener(events[i], report, false);
}
这些只是最重要的部分,完整的javascript代码直接写在两个网站的索引页中(不长(。
如果有人能为我带来一些光明,我将不胜感激。
jQuery也在内部使用addEventListener
。根据事件的不同,jQuery可能会进行一些映射或内部调整。
但是你的代码和Mozilla的代码之间的主要区别在于,你在回调方法中调用e.preventDefault();
,但Mozilla不会阻止事件的默认行为。
调用e.preventDefault();
不仅会阻止默认行为,而且还可以防止某些其他事件的发生。 例如,如果您阻止mousedown
或mousemove
则不会发生drag
事件。
事件在浏览器中的注册方式没有太大区别。
但是,Mozilla 只是将其处理程序绑定到您不侦听的事件。具体来说,这些是:
MSGotPointerCapture MSLostPointerCapture MSPointerCancel
blur focus
gotpointercapture lostpointercapture pointercancel
mousedown mouseup
mouseout
mouseover
touchenter touchleave
- JavaScriptV5中的绑定和JQuery之间有任何关系吗
- 直接绑定和使用每个函数之间的区别
- 工厂和控制器之间的“绑定”
- 隔离作用域+绑定名称和仅在AngularJS中的隔离作用域之间的差异
- 绑定返回的结果和使用function()的结果之间有什么区别
- 父关系指令和子关系指令之间的绑定
- 控制器和外部指令之间的双向数据绑定
- AngularJS:图片上传+文件阅读器预览.控制器、指令和作用域之间的绑定出现问题
- 在 Angular 中的控制器之间绑定数据
- ExtJS:网格和表单之间的双向绑定
- AngularJS Modal 中控制器之间的双向绑定
- 两个网络组件之间的绑定:谷歌地图+地理定位
- jQuery和纯Javascript中的指针事件绑定之间的区别
- 尝试实现 ng-repeate 和表单之间的双向绑定
- 为什么角度绑定在传入时会中断指令之间的绑定
- 发布绑定/监视两个控制器之间共享的服务变量
- 指令之间没有数据绑定's的范围及其's模板
- Angularjs-控制器和视图之间的绑定
- AngularJS如何在服务和控制器之间建立双向数据绑定
- 用JavaScript将事件侦听器绑定到特定日期和时间之间的提交表单