我正在使用此代码使页面上的某些项目可拖动/可拖放。
在IE / FF / Chrome上都可以,但是在Safari上却遇到了一些麻烦。
在每个事件上放置一些console.log(),我发现除了最重要的“放置”事件外,所有事件都可以被野生动物园识别。
谁能找到使该代码在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 {
}
},
最佳答案
您还必须在e.preventDefault();
上调用dragenter
。