【问题标题】:simulate touch events for html5模拟 html5 的触摸事件
【发布时间】:2015-03-27 15:25:39
【问题描述】:

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

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

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

我尝试使用 ::

var e = document.createEvent('UIEvent');
e.initUIEvent('touchstart', true, true);
e.touches = [{pageX: x, pageY: y}];

上面没有反应,然后我用了这个

var e = document.createEvent('TouchEvent');
e.touches = [{pageX: x, pageY: y}];

如果我不在移动仿真模式下,我会收到错误消息,但是当我进入移动仿真模式时,我没有得到任何响应

我也试过 :: this 没有运气

更新

From here

var type = 'move'; // or start, end
var event = document.createEvent('TouchEvent');
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);

这有效,但只在mobile emulation mode

由此引发了一个触摸事件,但通过real 触摸我有以下数据

TouchEvent {metaKey: false, altKey: false, shiftKey: false, ctrlKey: false, changedTouches: TouchList…}

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

TouchEvent {metaKey: false, altKey: false, shiftKey: false, ctrlKey: false, changedTouches: null…}

【问题讨论】:

    标签: javascript android html multi-touch


    【解决方案1】:

    From here

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

    这有效,但仅在mobile emulation mode

    【讨论】:

      猜你喜欢
      • 2010-11-02
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      相关资源
      最近更新 更多