1

我正在使用此代码使页面上的某些项目可拖放/可拖放。在 IE/FF/Chrome 上一切正常,但在 Safari 上我遇到了一些麻烦。在每个事件上放置一些 console.log() ,我发现所有事件都被 safari 识别,除了最重要的“drop”事件。

任何人都可以找到使此代码也可以在 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 {

    }
},
4

1 回答 1

0

你也必须打电话e.preventDefault();dragenter

于 2013-07-05T15:28:02.983 回答