0

I am successfully adding dragover, dragleave and drop event handlers from a dragenter triggered callback function.

IE11 won't add the tree event handlers though. Any suggestions?

// Drag-and-drop initiation. 
    if (!isMobile() && window.File && window.FileList && window.FileReader) {
        // Declare global variables.
        var dragStartsInside = false;
        
        // Initialize scripts.
        addEvent(window, "load", function () {
            for (var e=0; e < elementsArray.length; e++) {
                // Setup dnd listeners. 
                addEvent(elementsArray[e], "dragstart", function() {dragStartsInside = true; } ); 
                addEvent(elementsArray[e], "dragenter", dragEnter); 
                addEvent(elementsArray[e], "dragend", function() {dragStartsInside = false; } ); 
            }
        }); 
        
        // Drag and drop events. 
        function dragEnter(evt) { 
            cancelBubble(evt); 
            if (!dragStartsInside) {
                // Add "dragStartsInside"-dependent events. 
                addEvent(evt.target, "dragover", dragOver); 
                addEvent(evt.target, "dragleave", dragLeave); 
                addEvent(evt.target, "drop", drop); 
            }
            return cancelDefaultAction(evt);
        }
        
        function dragOver(evt) {
            cancelBubble(evt);
            ...
            return cancelDefaultAction(evt);
        }
        
        function drop(evt) {
            cancelBubble(evt);
            dragLeave(evt); 
            ...
            return cancelDefaultAction(evt);
        }
        
        function dragLeave(evt) {
            removeEvent(evt.target, "dragover", dragOver); 
            removeEvent(evt.target, "dragleave", dragLeave); 
            removeEvent(evt.target, "drop", drop); 
        }
    }
Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
  • possible duplicate of [attachEvent Doesn't work in IE > 8.0](http://stackoverflow.com/questions/20180046/attachevent-doesnt-work-in-ie-8-0) –  Jul 25 '15 at 09:12
  • _addEvent_ is custom: `function addEvent(element, eventType, callbackFunction) { if (element.addEventListener) element.addEventListener(eventType, callbackFunction, false); else if (element.attachEvent) element.attachEvent('on' + eventType, callbackFunction); }` – user2949795 Jul 25 '15 at 13:27
  • Also _cancelBubble_ and _cancelDefaultAction_ are custom: `function cancelBubble(e) { var event = e ? e : window.event; if (event.stopPropagation) event.stopPropagation(); else if (event.cancelBubble!=null) event.cancelBubble = true; }` `function cancelDefaultAction(e) { var event = e ? e : window.event; if (event.preventDefault) event.preventDefault(); event.returnValue = false; return false; }` – user2949795 Jul 25 '15 at 13:30

0 Answers0