事件侦听器

通用的事件侦听器函数

const EventUtils = {
  // 分别使用dom0||dom2||IE方式 来绑定事件
  // 添加事件
  addEvent: function(element, type, handler) {
    if (element.addEventListener) {
      element.addEventListener(type, handler, false);
    } else if (element.attachEvent) {
      element.attachEvent("on" + type, handler);
    } else {
      element["on" + type] = handler;
    }
  },

  // 移除事件
  removeEvent: function(element, type, handler) {
    if (element.removeEventListener) {
      element.removeEventListener(type, handler, false);
    } else if (element.detachEvent) {
      element.detachEvent("on" + type, handler);
    } else {
      element["on" + type] = null;
    }
  },

  // 获取事件目标
  getTarget: function(event) {
    return event.target || event.srcElement;
  },

  // 获取 event 对象的引用,取到事件的所有信息,确保随时能使用 event
  getEvent: function(event) {
    return event || window.event;
  },

  // 阻止事件(主要是事件冒泡,因为 IE 不支持事件捕获)
  stopPropagation: function(event) {
    if (event.stopPropagation) {
      event.stopPropagation();
    } else {
      event.cancelBubble = true;
    }
  },

  // 取消事件的默认行为
  preventDefault: function(event) {
    if (event.preventDefault) {
      event.preventDefault();
    } else {
      event.returnValue = false;
    }
  }
};
// 客户区的坐标位置:clientX、clientY
// 页面的坐标位置:pageX、pageY
// 在页面没有滚动的情况下,pageX = clinetX;pageY = clientY
// IE8以前版本不支持页面的坐标位置,实现兼容性代码如下:
// document.body(混杂模式) || document.documentElement(标准模式)
event = EventUtils.getEvent(event);
var pageX = event.pageX;
var pageY = event.pageY;
if (pageX === undefined) {
    pageX = event.clientX + (document.body.scrollLeft || document.documentElement.scrollLeft)
}
if (pageY === undefined) {
    pageY = event.clientY + (document.body.scrollTop|| document.documentElement.scrollTop)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
组件的自定义事件侦听器可以通过以下步骤进行设置: 1. 在组件中定义一个事件。可以使用特定的事件名称来标识该事件,例如 "customEvent"。 2. 在组件中创建一个方法来处理该事件。这个方法将在事件被触发时执行。 3. 在组件的适当位置,将该方法注册为事件侦听器。 在大多数前端框架中,这些步骤可能会有所不同,但是基本思路是相似的。下面是一个示例,展示了如何在Vue.js中实现自定义事件侦听器: 1. 在组件中定义一个自定义事件名称: ```javascript // MyComponent.vue <template> <button @click="triggerCustomEvent">Click me</button> </template> <script> export default { methods: { triggerCustomEvent() { this.$emit('customEvent', 'Custom event triggered'); } } } </script> ``` 2. 在父组件中使用该组件,并注册自定义事件侦听器: ```javascript // ParentComponent.vue <template> <div> <my-component @customEvent="handleCustomEvent"></my-component> </div> </template> <script> export default { methods: { handleCustomEvent(message) { console.log(message); // 输出 "Custom event triggered" // 执行其他逻辑... } } } </script> ``` 在这个示例中,当按钮在 `MyComponent` 组件中被点击时,`triggerCustomEvent` 方法会触发 `customEvent` 事件,并通过 `this.$emit` 方法传递一个消息。然后在父组件 `ParentComponent` 中,我们使用 `@customEvent` 语法来注册 `handleCustomEvent` 方法作为 `customEvent` 事件侦听器。当事件被触发时,`handleCustomEvent` 方法会被执行,接收到的消息将被打印出来。 请注意,这只是一个示例,实际上每个前端框架都有自己的方法来实现自定义事件侦听器。具体的实现方式可能会有所不同,请根据你所使用的框架的文档进行相应的了解和实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值