1

誰かがなぜこれが起こっているのか説明してもらえますか. これはondropハンドラーにあります

タイマー内の値が失われるのはなぜですか?

var _this = this;

this.event = event;

console.log(this.event.dataTransfer.items);
## DataTransferItemList {0: DataTransferItem, length: 1, item: function, clear: function, add: function}


setTimeout((function() {
  return console.log(_this.event.dataTransfer.items);
  ## DataTransferItemList {length: 0, item: function, clear: function, add: function}

}), 100);

これでもうまくいきません:

var items, _items,
  _this = this;

items = event.dataTransfer.items;
_items = items;

setTimeout((function() {
  return console.log(_items);
}), 100);
4

2 に答える 2

3

HTML5ドラッグアンドドロップを正しく読んでいる場合、dataTransferオブジェクトはドラッグアンドドロップの期間中のみ「ドラッグデータストア」に関連付けられます。それ以外の場合は、関連付けが解除または無効になります。これは、実際にitemsは空であることを意味します。

そのためevent.dataTransfer、ハンドラー内からのみ使用できondropます。項目を保持する必要がある場合は、それらをコピーする必要があります (項目のコピーが期待どおりに機能するかどうかはわかりませんが、必要なデータを抽出する必要がある場合があります)。すぐに。)

于 2013-05-22T08:11:27.303 に答える