diff --git a/modules/mixins/DragDropMixin.js b/modules/mixins/DragDropMixin.js index f7a4cc7fde..eb3c7b8fa5 100644 --- a/modules/mixins/DragDropMixin.js +++ b/modules/mixins/DragDropMixin.js @@ -186,7 +186,7 @@ function resetGlobalDragState() { if (isWebkit()) { window.addEventListener('dragover', function (e) { - if (checkIfCurrentDragTargetRectChanged()) { + if (_currentDragTarget && checkIfCurrentDragTargetRectChanged()) { // Prevent animating to incorrect position e.preventDefault(); } @@ -198,8 +198,8 @@ if (isWebkit()) { * We will attempt to fire it ourselves when global `drop` occurs. */ function triggerDragEndIfDragSourceWasRemovedFromDOM() { - if (_handleCurrentDragEnd && - _currentDragTarget && + if (_currentDragTarget && + _handleCurrentDragEnd && !document.contains(_currentDragTarget)) { _handleCurrentDragEnd(); @@ -218,6 +218,10 @@ if (!isFirefox()) { var _lastDragSourceCheckTimeout = null; window.addEventListener('dragover', function () { + if (!_currentDragTarget) { + return; + } + clearTimeout(_lastDragSourceCheckTimeout); _lastDragSourceCheckTimeout = setTimeout( @@ -479,4 +483,4 @@ var DragDropMixin = { } }; -module.exports = DragDropMixin; \ No newline at end of file +module.exports = DragDropMixin;