Internet Explorer 9拖放(DnD)

有谁知道为什么下面的网站拖放示例(加上许多其他教程在线)不工作在Internet Explorer 9? Chrome,FireFox和Safari都可以。

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

我以为IE9假设是最符合HTML5的浏览器? 特别是与DnD,因为他们一直支持自IE5以来。 我必须在某处更改设置吗?

我玩HTML5和CSS3越多…… IE9就越less。

有没有人有任何链接到在IE9中工作的DnD教程?

那么我在IE9中遇到了这种奇怪的行为,似乎是IE9不会做一个拖放(HTML 5样式)的div。 如果你想改变一个与HREF =“#”的DIV,你将能够拖放。

这不会拖动:

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

这将会:

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

希望这有助于任何人

我find了一个workarround使本地dnd api也可以在IE中使用链接和图像以外的元素。 将onmousemove处理程序添加到可拖动容器,并在按下button时调用本机IE函数element.dragDrop():

 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 

我遇到了同样的问题。 这个技巧适用于我:

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

它停止select并开始拖动。

这个DnD的例子是在IE9中工作。

我认为HTML5Rocks的例子不能在IE9中使用,因为CSS3的特性。 这个例子使用了几个CSS3特性,但IE9的CSS3支持不好。

此外,一些JS事件和方法在IE中不起作用。 例如setDragImage()即使在IE9中也不工作。 这也是原因之一。

我也一直在看这个,我发现Opera 11.50有一个基本问题; 它和IE9都不理解HTML5可拖动属性,也不了解HTML5拖放事件。

作为一种解决方法,我在http://dev.opera.com/articles/view/accessible-drag-and-drop/上find了这篇歌剧文章,它模拟了对mousedown,mouseover,mousemove,mouseout等的拖放支持。和mouseup事件。; 当然,这是很多工作,但它确实给你在Opera中的支持。

你可以在http://devfiles.myopera.com/articles/735/example.html看到现场演示;

相同的dnd仿真技巧适用于IE9,并且与其他HTML5浏览器兼容。

我和上面的Didier Caron有同样的问题。 可拖动div不工作,但锚标签工作正常。 我在HTML5 Doctorfind了一个解决scheme。

我会build议使用jQuery UI的可拖动 。

使用默认情况下可拖动属性设置为true的元素。 他们应该干杯干杯

这对我有用。 它使得IE9的行为就像其他的现代浏览器一样拖/放:

 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; } } }); }