2013-08-29 4 views
0

Я создал этот маленький скрипт для создания перетаскиваемого DIV с использованием свойства dragabble в HTML5, все работает отлично, за исключением того хелпера, который появляется в конце перетаскивания. Есть ли способ предотвратить это?HTML5 Перетаскиваемый атрибут: предотвратить появление помощника

http://jsfiddle.net/ubugnu/66AVB/

<div id="toBeDragged" style="position: absolute;" draggable="true"> 
    This text <strong>may</strong> be dragged. 
</div> 

<script> 
document.getElementById('toBeDragged').addEventListener('dragstart', function(event) { 
    X = event.offsetX; 
    Y = event.offsetY; 
}); 
document.getElementById('toBeDragged').addEventListener('drag', function(event) { 
    this.style.left = event.pageX - X + 'px'; 
    this.style.top = event.pageY - Y + 'px'; 
}); 
</script> 

Edit: кажется, что он не работает на Firefox! У кого-нибудь есть идея, почему он не работает?

+0

что вы пытаетесь сделать. По умолчанию изображение элемента, которое следует за мышью, когда оно перетаскивается. Что можно изменить. Но вы добавляете копию изображения, чтобы имитировать такое же поведение, а затем хотите удалить реальный. Зачем. –

+0

Боюсь, я не следую за тобой, я хочу, чтобы это изображение «призрака», которое следует за мышью, чтобы не появляться в конце перетаскивания. – ubugnu

+0

Я думаю, что слово «помощник» действительно не подходит! – ubugnu

ответ

0

Ознакомьтесь с документами MDN по перетаскиванию.

Вам необходимо установить некоторые данные перетаскивания, чтобы Firefox знал, как отображать информацию о перетаскивании. Он нестандартен, что он работает в других браузерах.

Я обновил свою скрипку, добавив

event.dataTransfer.setData('text/html', 'This text <strong>may</strong> be dragged'); 

на мероприятие dragStart.

Смотрите, если это поведение, которое вы хотите: http://jsfiddle.net/66AVB/1/

+0

К сожалению, копия перетаскиваемого элемента «призрака» по-прежнему отображается – ubugnu

+0

Это исправление, чтобы заставить его работать с firefox (и быть стандартами, совместимыми с другими). Я не уверен, что вы подразумеваете под призрачной копией - путем установки данных так, как я сделал, он преднамеренно отображает содержимое этого div при перетаскивании. Что вы видите? –

+0

Все еще не работает над FF23 Проблема не во время перетаскивания, но когда перетаскивание заканчивается, «призрачная копия» элемента возвращается в исходное место :-) – ubugnu

0

Если вы могли бы использовать JQuery, почему бы просто не использовать JQuery UI, пока на него.

http://jsfiddle.net/66AVB/2/

весь код, который вам нужно это:

$('#toBeDragged').draggable();

+0

Увы, мне это нужно в чистом JS – ubugnu

Смежные вопросы