addEventListener'drop'无法在Safari上运行

时间:2013-07-05 15:13:34

标签: javascript jquery safari drag-and-drop draggable

我正在使用此代码在页面上创建一些draggable / droppable。 在IE / FF / Chrome上一切正常,但在Safari上我遇到了一些麻烦。 在每个事件上放置一些console.log(),我发现除了最重要的'drop'事件之外,safari都会识别所有事件。

任何人都可以找到使这段代码也可以在Safari上运行的解决方案吗?

prepareDrag:function () {
    if (Modernizr.draganddrop) {
        var dragged = $SHS.j('a');
        $SHS.j.each(dragged, function (index, value) {
            value.addEventListener('dragstart', function (e) {
                try {
                    var img = $SHS.j(this).find('img');
                    if ((img[0].nodeName).toUpperCase() == 'IMG') {
                        var commandData = img[0].src + '|' + value.href;
                        //Do Stuff
                    } else throw 'Non valido';
                } catch (err) {
                    //Errore
                }
            }, false);
            value.addEventListener('dragend', function (e) {
                //Do Stuff
            }, false);
        });
    }
},
prepareDrop:function () {
    if (Modernizr.draganddrop) {
        var dropper = document.getElementById('dropArea');
        dropper.addEventListener('dragenter', function (e) {
            $SHS.j("#dropArea").addClass('drop-over');
        }, false);

        dropper.addEventListener('drop', function (e) {
            e.stopPropagation();
            e.preventDefault();
            $SHS.j("#dropArea").removeClass('drop-over');
            //Do stuff
        }, false);

        dropper.addEventListener('dragover', function (e) {
            e.stopPropagation();
            if (e.preventDefault) {

                e.preventDefault();
            }
            $SHS.j("#dropArea").addClass('drop-over');
        }, false);

        dropper.addEventListener('dragleave', function (e) {
            $SHS.j("#dropArea").removeClass('drop-over');
        }, false);

    } else {

    }
},

1 个答案:

答案 0 :(得分:0)

您还必须在e.preventDefault();上致电dragenter