我正在使用此代码使页面上的某些项目可拖放/可拖放。在 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 {
}
},