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

9
我正在尝试在我的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: 表达式 'evt.initTouchEvent[undefined]' 的结果不是一个函数。

请问有人能指出我哪里做错了吗?
2个回答

9
根据 w3c 触摸规范TouchEvent 是 UIEvent 的子类。试着按以下方式创建它:
var evt = document.createEvent('TouchEvent');

尝试过仍然是相同的异常。无论我使用单数还是复数形式,UIEvent对象都将被创建。 - prk
我现在没有设备来测试它。明天会测试并更新。 - prk
据我所知,Android模拟器内置了移动版的WebKit。 - vbence

5

变更:

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

to:

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

我在使用chrome的夜间版时,这个方法对我有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接