Метод handleDragStart не вызывается при попытке из Firefox, но он работает в Chrome - PullRequest
0 голосов
/ 15 октября 2019

Метод handleDragStart не вызывается, когда мы используем браузер Firefox, но он работает в Chrome. Может кто-нибудь помочь мне? У вас есть идея, почему она не работает в Firebox?

addDnDHandlers: function () {
    this.dragSrcEl = null;
    var assignedListItems = this.$(".assignedListContainer .assignedListItem");
    [].forEach.call(assignedListItems, this.addItemDnDHandlers.bind(this));
},
addItemDnDHandlers: function (elem) {
    elem.addEventListener('dragstart', this.handleDragStart.bind(this), false);
    elem.addEventListener('dragover', this.handleDragOver.bind(this), false);
    elem.addEventListener('drop', this.handleDrop.bind(this), false);
    elem.addEventListener('dragend', this.handleDrag.bind(this), false);
},
handleDragStart: function (e) {
    var currentElement = e.currentTarget;
    this.dragSrcEl = currentElement;
    e.dataTransfer.effectAllowed = 'move';
    e.dataTransfer.setData('text/html', currentElement.outerHTML);
    currentElement.classList.add('dragElem');
},
handleDragOver: function (e) {
    if (e.preventDefault) {
        e.preventDefault(); // Necessary. Allows us to drop.
    }
    e.dataTransfer.dropEffect = 'move'; // See the section on the DataTransfer object.
    return false;
},
handleDrag: function (e) {
    e.currentTarget.classList.remove('dragElem');
},
handleDrop: function (e) {
    var currentElement = e.currentTarget;
    if (e.stopPropagation) {
        e.stopPropagation(); // Stops some browsers from redirecting.
    }
    if (this.dragSrcEl != currentElement) {
        if ($(this.dragSrcEl).index() < $(currentElement).index()) {
            insertIndex = "afterend";
        } else {
            insertIndex = "beforebegin";
        }
        currentElement.parentNode.removeChild(this.dragSrcEl);
        var dropHTML = e.dataTransfer.getData('text/html');
        currentElement.insertAdjacentHTML(insertIndex, dropHTML);
        var dropElem;
        if (insertIndex === "afterend") {
            dropElem = currentElement.nextElementSibling;
        } else {
            dropElem = currentElement.previousSibling;
        }
        this.addItemDnDHandlers(dropElem);
        this.trigger("dropEvent");

    }
    return false;
}
...