模拟html5的触摸事件

Pav*_*n K 5 html javascript android multi-touch

我正在构建一个 html5 游戏,我想以编程方式将多点触摸事件发送到浏览器。

\n\n

我的想法是设置一个节点服务器并将事件转发到网页。是否有任何库已经做到了这一点或者我可以模拟此类事件?

\n\n

例如,this page启用了多点触控,但在桌面上您无法交互,因为只有鼠标。如果我可以模拟这些事件,那么我就可以与对象进行交互。我正在寻找这样的东西...任何指针都有帮助...

\n\n

我尝试使用::

\n\n
var e = document.createEvent(\'UIEvent\');\ne.initUIEvent(\'touchstart\', true, true);\ne.touches = [{pageX: x, pageY: y}];\n
Run Code Online (Sandbox Code Playgroud)\n\n

我对上述内容没有任何反应,然后我使用了这个

\n\n
var e = document.createEvent(\'TouchEvent\');\ne.touches = [{pageX: x, pageY: y}];\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我未处于移动模拟模式,则会收到错误消息,但当我转到移动模拟模式时,我没有得到任何响应

\n\n

我也尝试过::this但没有运气

\n\n

更新

\n\n

从这里

\n\n
var type = \'move\'; // or start, end\nvar event = document.createEvent(\'TouchEvent\');\nevent.initEvent(\'touch\' + type, true, true);     \nevent.constructor.name; // Event (not TouchEvent)\n\nvar point = {x: 10, y: 10 };\nevent.touches = [{\n    identifier: Date.now() + i,\n    pageX: x,\n    pageY: y,\n    screenX: x,\n    screenY: y,\n    clientX: x,\n    clientY: y\n}, {  identifier: Date.now() + i,\n    pageX: point.x,\n    pageY: point.y,\n    screenX: point.x,\n    screenY: point.y,\n    clientX: point.x,\n    clientY: point.y}]\n\n    dispatchEvent(event);\n
Run Code Online (Sandbox Code Playgroud)\n\n

这有效,但仅在mobile emulation mode

\n\n

这样会引发触摸事件,但通过触摸real我有以下数据

\n\n
TouchEvent {metaKey: false, altKey: false, shiftKey: false, ctrlKey: false, changedTouches: TouchList\xe2\x80\xa6}\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是对于自定义事件,changedTouches 元素为 null,是的,我尝试设置e.touches to e.changedTouches

\n\n
TouchEvent {metaKey: false, altKey: false, shiftKey: false, ctrlKey: false, changedTouches: null\xe2\x80\xa6}\n
Run Code Online (Sandbox Code Playgroud)\n

Pav*_*n K 1

从这里

var type = 'move'; // or start, end
var event = document.createEvent('Event');
event.initEvent('touch' + type, true, true);     
event.constructor.name; // Event (not TouchEvent)

var point = {x: 10, y: 10 };
event.touches = [{
    identifier: Date.now() + i,
    pageX: x,
    pageY: y,
    screenX: x,
    screenY: y,
    clientX: x,
    clientY: y
}, {  identifier: Date.now() + i,
    pageX: point.x,
    pageY: point.y,
    screenX: point.x,
    screenY: point.y,
    clientX: point.x,
    clientY: point.y}]

    dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)

这有效,但仅在mobile emulation mode