Internet Explorer 9 Arrastrar y soltar (DnD)


¿Alguien sabe por qué los siguientes ejemplos de arrastrar y soltar (además de muchos otros tutoriales en línea) no funcionan en Internet Explorer 9? Chrome, FireFox y Safari están bien.

Http://www.html5rocks.com/tutorials/dnd/basics /

Pensé que IE9 se supone que es el navegador más compatible con HTML5? Especialmente con DnD ya que lo han estado apoyando desde IE5. ¿Tengo que cambiar una configuración en algún lugar?

Cuanto más juego con HTML5 y CSS3...el más IE9 carece.

¿Alguien tiene algún enlace a tutoriales DnD que funcionen en IE9?

Author: j0k, 2011-03-31

9 answers

Bueno, he encontrado este mismo comportamiento extraño en IE9, parece ser que IE9 no hace un Arrastrar y Soltar (estilo HTML 5) en div. si cambias el div por una A con href="#" podrás arrastrar y soltar.

Esto no se arrastra:

<div data-value="1" class="loadedmodule-container" draggable="true">drag</div>

Y esto será:

<a href="#" data-value="1" class="loadedmodule-container" draggable="true">drag</a>

Espero que esto ayude a alguien

 21
Author: Didier Caron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-18 12:34:40

He encontrado un workarround para hacer que la api dnd nativa también funcione en IE con elementos que no sean enlaces e imágenes. Agregue un controlador onmousemove al contenedor arrastrable y llame al elemento de función IE nativo.DragDrop (), cuando se presiona el botón:

function handleDragMouseMove(e) {
    var target = e.target;
    if (window.event.button === 1) {
        target.dragDrop();
    }
}

var container = document.getElementById('widget');
if (container.dragDrop) {
    $(container).bind('mousemove', handleDragMouseMove);
}

// todo: add dragstart, dragover,... event handlers
 25
Author: terabaud,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-24 11:40:48

Me he encontrado con el mismo problema. Este truco funciona para mí:

node.addEventListener('selectstart', function(evt) {
    this.dragDrop();
    return false;
}, false);

Detiene la selección e inicia el arrastre.

 3
Author: Ali Gangji,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-07 21:19:38

Este ejemplo DnD funciona en IE9.

Creo que el ejemplo de HTML5Rocks no funciona en IE9 debido a las características de CSS3. El ejemplo usó varias características de CSS3, pero el soporte de CSS3 de IE9 no es bueno.

Además, algunos de los eventos y métodos de JS no funcionan en IE. Por ejemplo, setDragImage() no funciona ni siquiera en IE9. Esta es también una de las razones.

 2
Author: Sanghyun Lee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-01 14:50:08

He estado mirando esto también, he encontrado que Opera 11.50 tiene el mismo problema básico; tanto él como IE9 no entienden el atributo arrastrable HTML5, ni los eventos de arrastrar y soltar HTML5.

Como solución alternativa, encontré este artículo de opera en http://dev.opera.com/articles/view/accessible-drag-and-drop / que emula el soporte de arrastrar y soltar con los eventos mousedown, mouseover, mousemove, mouseout y mouseup. Naturalmente, esto es mucho trabajo, pero le da soporte dnd en Opera.

Puedes ver una demostración en vivo en http://devfiles.myopera.com/articles/735/example.html

El mismo truco de emulación dnd funciona con IE9, y parece compatible con otros navegadores HTML5.

 1
Author: adamrmcd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-17 18:39:29

Estoy teniendo el mismo problema que Didier Caron arriba. Los divarrastrables no funcionan, pero las etiquetas de anclaje funcionan bien. Encontré una solución en HTML5 Doctor .

 0
Author: jaysmith024,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-05 22:35:02
 0
Author: AlexC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-05 22:43:13

Utilice elementos que tengan la propiedad arrastrable establecida en true de forma predeterminada. ellos el y debería funcionar Salud

 0
Author: Hubert Boma Manilla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-12 10:09:31

Esto funciona para mí. Hace que IE9 se comporte como otros navegadores modernos en cuanto a arrastrar / soltar:

if (document.doctype && navigator.appVersion.indexOf("MSIE 9") > -1) {
    document.addEventListener('selectstart', function (e) {
        for (var el = e.target; el; el = el.parentNode) {
            if (el.attributes && el.attributes['draggable']) {
                e.preventDefault();
                e.stopImmediatePropagation();
                el.dragDrop();
                return false;
            }
        }
    });
}
 0
Author: Bernardo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-11 20:51:32