2016-12-31 3 views
0

Есть ли причины, по которым изображение не будет перетаскиваться в Firefox, даже если атрибут draggable="true"? Я разрабатываю сценарий обмена изображениями в JS, но у меня возникают проблемы при запуске в Firefox. Хотя код отлично работает в Chrome, Edge и IE, когда я пытаюсь перетащить изображение в Firefox, он не выглядит так, как будто браузер позволяет мне перетаскивать изображение (изображение не отображается) и, таким образом, мое событие перетаскивания не запускает или не вызывает никаких событий капли. Я генерации изображения с помощью document.createElement('img') и установки атрибутов сПроблемы перетаскивания элементов в Firefox

imgElement.setAttribute('draggable', true); 
imgElement.setAttribute('ondragstart', 'drag(event)'); 

моя функция перетаскивания:

function drag(ev) { 
if (!ev.target.classList.contains(clickClass)) { 
    return; 
} 

ev.dataTransfer.setData("text", ev.target.id); 
document.getElementById(ev.target.id).parentElement.setAttribute('class', 'noclick'); 
}; 

Я прочитал в другом вопросе о том, что событие перетаскивания может не сработать в Firefox, если данные не однако, это не похоже на проблему.

+1

Просьба представить рабочий пример (не только части кода). Это будет лучший способ получить помощь. Вы можете использовать для этого http://jsfiddle.net или создать [фрагмент] (https://stackoverflow.blog/2014/09/introducing-runnable-javascript-css-and-html-code-snippets/) – Dekel

+0

Я создал jsfiddle и, похоже, работает в jsfiddle, но не на сайте. Было бы хорошо, если бы я удалил этот пост, поскольку, похоже, проблема не может быть связана с JS? – wallabe

ответ

2

Вместо imgElement.setAttribute('ondragstart', 'drag(event)'); вы должны добавить dragstart слушателя вместо:

imgElement.addEventListener('dragstart', function(e){ 
    drag(e); 
}); 
+1

Я создал jsfiddle и, похоже, работает в jsfiddle, но не на сайте. Было бы хорошо, если бы я удалил этот пост, поскольку, похоже, проблема не может быть связана с JS? – wallabe

+0

Если вы удалите этот пост, я не получу от него голоса. Есть ли причина удалить его? Я думаю, что ответ правильный ... – Dekel

+0

Я могу оставить его, просто потому, что проблема, похоже, не связана с самим Javascript. То есть, когда я подключил свой старый код к jsfiddle, у него был желаемый результат. – wallabe