正在移动设备上停止Famo.us手势处理程序事件传播

Stopping Famo.us GestureHandler event propagation on mobile

本文关键字:us 处理 程序 传播 事件 Famo 移动      更新时间:2023-09-26

Famo.us的GestureHandler似乎在移动设备上不流行。即使是非常简单的测试:

var FamousEngine = require('famous/core/FamousEngine');
var DOMElement = require('famous/dom-renderables/DOMElement');
var GestureHandler = require('famous/components/GestureHandler');
FamousEngine.init();
var scene = FamousEngine.createScene();
var rootNode = scene.addChild();
var backgroundNode = rootNode.addChild();
var backgroundElement = new DOMElement(rootNode, {
    classes: ['background'],
});
var gestures = new GestureHandler(rootNode);
gestures.on('drag', function(e) {
    console.log(e);
    .
    .
    .
});

当你用鼠标拖动时,拖动手势回调在桌面上启动,但在移动浏览器中拖动只是滚动文档。

传递给回调的事件,在我的例子中是e,是一个自定义的著名事件,没有通常的.stopPropagation方法。

什么东西?

发现答案与事件处理无关。在我的事件处理程序中,我使用ES6的新析构函数语法创建了几个变量:

var [x, y] = node.getPosition();

虽然我的代码被"babelified"了,这在桌面浏览器上非常有效,但在iOS上却失败了。

这里也描述了这个问题:

https://github.com/babel/babelify/issues/22

解决办法就是用老式的方法。。。

:(