reactjs - 如何修复参考错误:使用反应找不到变量触摸事件?
问题描述
我想修复reference error: cannot read variable TouchEvent
. 此错误显示在 Safari 上,但不在其他浏览器上。
我正在尝试一种方法来检测事件并复制鼠标事件,如下所示。但不知何故,在 Safari 上,当它执行下面的方法时,它会抛出上面提到的错误。
function copy_mouse_event(event) {
const event_init = {
// EventInit
bubbles: event.bubbles,
eventPhase: event.eventPhase,
// UIEventInit
detail: event.detail,
view: event.view,
// EventModifierInit
altKey: event.altKey,
ctrlKey: event.ctrlKey
};
// initialise MouseEvent data which is shared by wheel, mouse and pointer events
let mouse_event_init = {};
if (event instanceof MouseEvent) {
mouse_event_init = {
...event_init,
button: event.button,
buttons: event.buttons,
clientX: event.clientX,
clientY: event.clientY,
relatedTarget: event.relatedTarget,
screenX: event.screenX,
screenY: event.screenY
};
if (event instanceof WheelEvent) {
const wheel_event_init = {
...mouse_event_init,
deltaMode: event.deltaMode,
deltaX: event.deltaX,
deltaY: event.deltaY,
deltaZ: event.deltaZ,
wheelDelta: event.wheelDelta,
wheelDeltaX: event.wheelDeltaX,
wheelDeltaY: event.wheelDeltaY
};
return new WheelEvent(event.type, wheel_event_init);
}
}
// try the modern pointer event first, then mouse and touch events
if (event instanceof PointerEvent) {
const pointer_event_init = {
...mouse_event_init,
pointerId: event.pointerId,
width: event.width,
height: event.height,
pressure: event.pressure,
pointerType: event.pointerType,
isPrimary: event.isPrimary
};
return new PointerEvent(event.type, pointer_event_init);
} else if (event instanceof MouseEvent) {
return new MouseEvent(event.type, mouse_event_init);
} else if (event instanceof TouchEvent) {
//error occurs here only on safari
const touch_event_init = {
...event_init,
changedTouches: event.changedTouches,
targetTouches: event.targetTouches,
touches: event.touches
};
return new TouchEvent(event.type, touch_event_init);
}
}
该错误仅发生在此行else if (event instanceof TouchEvent)
且仅在 Safari 上。我不确定如何解决此问题以及导致问题的原因。有人可以让我对此有所了解吗?
解决方案
那是因为根据DocumentationTouchEvent
不受支持。safari
TouchEvent
推荐阅读
- angular - oidc-client angular 6 令牌在 F5 后丢失
- python - 如何在不同列上对 pandas 使用条件
- javascript - 角度排序列
- angular6 - 使用模型向组件发送数据
- javascript - 如何在li元素JavaScript中获取标签的值
- angular - Angular 5如何删除URL中的辅助路由出口名称但出口应该加载
- angular - Angular - 点击后显示额外的 div
- node.js - nodejs - 在 for 循环结束后返回 Promise
- babeljs - babel-preset-env 支持哪些插件(javascript 功能)?
- ios - 无法将“_SwiftValue”类型的值转换为“NSNumber”