admin管理员组

文章数量:1391981

My markup:

<section id="drop-target">
  Drop file here...
</section>

My code:

var dropTarget = document.getElementById('drop-target');

Rx.Observable.fromEvent(dropTarget, 'dragover').subscribe(function(event) {
  event.preventDefault();
});

var dropStream = Rx.Observable.fromEvent(dropTarget, 'drop');

dropStream.subscribe(function(event) {
  console.log('This will be called.');
  event.preventDefault();
});

dropStream.map(function(event) {
  console.log('This will not be called.');
  return event.dataTransfer.files[0].path;
});

Any ideas how my last mapcallback can be called? I need both preventDefaults for drop and dragover to prevent the browser from opening the file.

My markup:

<section id="drop-target">
  Drop file here...
</section>

My code:

var dropTarget = document.getElementById('drop-target');

Rx.Observable.fromEvent(dropTarget, 'dragover').subscribe(function(event) {
  event.preventDefault();
});

var dropStream = Rx.Observable.fromEvent(dropTarget, 'drop');

dropStream.subscribe(function(event) {
  console.log('This will be called.');
  event.preventDefault();
});

dropStream.map(function(event) {
  console.log('This will not be called.');
  return event.dataTransfer.files[0].path;
});

Any ideas how my last mapcallback can be called? I need both preventDefaults for drop and dragover to prevent the browser from opening the file.

Share Improve this question edited Jan 27, 2016 at 3:28 bnieland 6,5464 gold badges43 silver badges69 bronze badges asked Jan 30, 2015 at 6:40 PipoPipo 5,8217 gold badges37 silver badges46 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 6

You just need to subscribe to your map stream. All map does is create a new observable that will run the map operation on the stream. But you still need to subscribe to make it do something:

dropStream
    .map(function (event) {
        console.log("hello");
        return event.dataTransfer.files[0].path;
    })
    .subscribe(function (path) {
        console.log("path=" + path);
    });

本文标签: javascriptRxJS How can I eventpreventDefault() a drop eventStack Overflow