Mam stronę internetową, która umożliwia przeciąganie plików spoza przeglądarki i umieszczanie ich na stronie docelowej. Moja aplikacja prześle kopię każdego pliku, więc ustawię dataTransfer.dropEffect na "kopiowanie", aby przeglądarka wskazywała użytkownikowi, że spowoduje to skopiowanie, a nie przeniesienie. Działa to zgodnie z oczekiwaniami w Chrome: podczas przeciągania pliku ponad moim celem upuszczenia przeglądarka wyświetla kursor "kopiuj". Jednak Firefox zdaje się ignorować efekt dropEffect i wyświetla domyślny kursor "move", podczas gdy pliki są przeciągane na mój cel upuszczania. Zrobiłem dużo wyszukiwania i nie znalazłem żadnej wzmianki o takim problemie Firefoksa, więc prawdopodobnie przeoczę trochę szczegółów w moim kodzie. Załączam uproszczony przykład, który ilustruje problem poniżej. Z góry dziękuję, jeśli ktoś zauważy, co robię źle.Funkcja dropEffect nie działa podczas przeciągania plików do przeglądarki Firefox
<!DOCTYPE html>
<html>
<head>
<title>Test Stuff</title>
<style type="text/css">
P
{
background-color: #cccccc;
padding: 10px;
}
</style>
<script type="text/javascript">
function DocOnLoad() {
var target = document.getElementById('dropTarget');
target.addEventListener('dragenter', function (e) {
e.preventDefault();
e.dataTransfer.dropEffect = 'copy';
});
target.addEventListener('dragover', function (e) {
e.preventDefault();
e.dataTransfer.dropEffect = 'copy';
});
target.addEventListener('drop', function (e) {
e.preventDefault();
var files = e.dataTransfer.files;
alert(files[0].name);
});
}
</script>
</head>
<body onLoad="DocOnLoad()" >
<p id="dropTarget">Drop target.</p>
</body>
</html>
Mam ten sam problem. Moje obserwacje mówią, że Chrome i Safari w systemie Windows respektują dropEffect, ale Firefox 13, Opera 11.64 i Internet Explorer 9 i 10 tego nie robią. :( – thomthom