我尝试使用RxJS实现拖放功能。它几乎可以工作,但拖拽事件会在mousedown上触发,我不明白为什么。
这是代码的简化版本,我正在聆听文档,以简化示例。
const down = Rx.Observable.fromEvent(document, 'mousedown');
const up = Rx.Observable.fromEvent(document, 'mouseup');
const move = Rx.Observable.fromEvent(document, 'mousemove');
const drag = down.switchMap(() => move.takeUntil(up).take(1));
const dragging = drag.switchMap(() => move.takeUntil(up));
const drop = drag.switchMap(() => up.take(1));
down
,up
,dragging
和drop
按预期工作,但drag
会直接在mousedown上触发,为什么?
JSBin: http://jsbin.com/rafurudofe/1/edit?js,console,output
编辑: 似乎它在IE中按预期工作,但在Chrome中没有。