admin管理员组

文章数量:1253118

I am trying to fire touch events in my JavaScript to simulate user interactions for the purpose of testing features. I have tried the following snippet:

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

The above code throws the exception:

TypeError: Result of expression 'evt.initTouchEvent[undefined]' is not a function.

Can somebody point out what I'm doing wrong?

I am trying to fire touch events in my JavaScript to simulate user interactions for the purpose of testing features. I have tried the following snippet:

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

The above code throws the exception:

TypeError: Result of expression 'evt.initTouchEvent[undefined]' is not a function.

Can somebody point out what I'm doing wrong?

Share Improve this question edited Apr 23, 2023 at 10:33 Brian Tompsett - 汤莱恩 5,89372 gold badges61 silver badges133 bronze badges asked Apr 19, 2011 at 8:07 prkprk 3381 gold badge5 silver badges10 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 9

According to w3c touch spec, TouchEvent is a subclass of UIEvent. Try creating it like:

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

change:

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

to:

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

worked for me with nightly chrome build

本文标签: javascriptCreating and firing touch events on a touch enabled browserStack Overflow