gpt4 book ai didi

javascript - 如何使用javascript或react检查touchevent是否存在?

转载 作者:行者123 更新时间:2023-12-02 21:57:38 26 4
gpt4 key购买 nike

我想摆脱 safari 浏览器上的错误“referenceError:找不到变量 TouchEvent”。我的代码如下,

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,
};
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);
}
}

由于 safari 浏览器不支持触摸事件,我想通过检查触摸事件是否存在来修复。我如何检查 touchevent 是否存在。有人可以帮我解决这个问题吗?谢谢。

最佳答案

要检查 TouchEvent 是否存在,您可以执行以下操作:

if ('TouchEvent' in window) {
...
}

仅检查 TouchEvent,如 if (TouchEvent ...) 不起作用,就好像它未定义一样,您将收到运行时错误。执行此操作的有效方法是:

 if (window.TouchEvent) {
...
}

编辑:如果你想使用typeof,你可以这样做:

if (typeof TouchEvent !== 'undefined') {
...
}

使用您喜欢的方法,因为两者都有效。

希望这有帮助。

关于javascript - 如何使用javascript或react检查touchevent是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59962468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com