在支持触摸的浏览器上创建和触发触摸事件

Creating and firing touch events on a touch enabled browser?

本文关键字:触摸 创建 事件 支持 浏览器      更新时间:2023-09-26

我试图在JavaScript中触发触摸事件来模拟用户交互,以测试功能。我尝试了下面的代码片段:

try {
    var targetElement = document.elementFromPoint(55, 155);
    console.log(targetElement);
    var evt = document.createEvent('UIEvent');
    evt.initTouchEvent('touchstart', true, true);
    
    evt.view = window;
    evt.altKey = false;
    evt.ctrlKey = false;
    evt.shiftKey = false;
    evt.metaKey = false;
    
    targetElement.dispatchEvent(evt);
} catch (except){
    alert(except);
}

上面的代码抛出异常:

TypeError: Result of expression 'evt.>initTouchEvent[undefined]'不是一个函数。

谁能指出我做错了什么吗?

根据w3c touch spec, TouchEvent是UIEvent的子类。试着创建如下:

var evt = document.createEvent('TouchEvent');

change:

evt.initTouchEvent('touchstart', true, true);

:

evt.initUIEvent('touchstart', true, true);

工作为我夜间chrome构建