javascript - 如何向 JavaScript MouseEvent 添加附加信息,例如 relativeClientX 属性?
问题描述
有时我可能需要clientX
and clientY
,MouseEvent
这样MouseEvent
就足够了。但其他时候,我可能需要clientRelativeX
并使用以下clientRelativeY
方法计算getBoundingClientRect()
:
/**
* @param {function(MouseEvent, HTMLElement): void} onMouseMove
* @param {HTMLElement} [document] targetElement
*/
export const registerMouseMoveHandler = (onMouseMove, targetElement = document) => {
targetElement.addEventListener('mousemove', e => {
const {
left: leftOffset,
top: topOffset,
} = targetElement.getBoundingClientRect();
const clientRelativeX = e.clientX - Math.floor(leftOffset);
const clientRelativeY = e.clientY - Math.floor(topOffset);
// Maybe e.clientRelativeX = clientRelativeX;
// Maybe e.clientRelativeY = clientRelativeY;
onMouseMove(e, targetElement);
});
};
所以我的问题是:我应该直接将属性添加到MouseEvent
? 所有主要浏览器都支持还是这样做的非标准方式?另一种可能性是CustomEvent
具有 originalEvent 属性。
解决方案
推荐阅读
- python - Scrapy 不会从某些页面检索数据到项目
- angular - 了解父组件和子组件如何处理对象
- java - 无法将 Gson JsonObject 转换为 POJO 类
- ms-access - 如何通过变量写入表单的路径?
- ruby-on-rails - 嵌套路由的简单形式
- python - 如何计算字典中给出的单词并计算该单词是否在高级瓷砖上?
- reactjs - 如何在我的 App.js 视图中导入和使用此文件
- push-notification - 无法提交推送通知。错误代码 460
- javascript - 如何使用 JS 在来自不同字段的输入之间保持准确的字符数?
- java - 一段代码看不懂,求指导