将数据拖出 HTML 元素

Adobe AIR 1.0 和更高版本

默认行为允许以拖动方式复制 HTML 页面中的大部分内容。可以使用 CSS 属性 -webkit-user-select-webkit-user-drag 来控制允许拖动的内容。

dragstart 事件的处理函数中覆盖默认的拖出行为。调用事件对象的 dataTransfer 属性的 setData() 方法,以便将您自己的数据放入拖动动作。

若要指示在不依赖默认行为时源对象支持的拖动效果,请设置为 dragstart 事件调度的事件对象的 dataTransfer.effectAllowed 属性。您可以选择任意效果组合。例如,如果源元素既支持复制 效果,也支持链接 效果,则请将此属性设置为 "copyLink"

设置拖动的数据

使用 dataTransfer 属性在 dragstart 事件的处理函数中为拖动动作添加数据。使用 dataTransfer.setData() 方法将数据放到剪贴板上,同时传入 MIME 类型和要传输的数据。

例如,如果应用程序中有一个 ID 为 imageOfGeorge 的图像元素,则可以使用下面的 dragstart 事件处理函数。此示例以多种数据格式添加 George 照片的表示形式,从而增加了其他应用程序能够使用拖动的数据的可能性。

function dragStartHandler(event){         
    event.dataTransfer.effectAllowed = "copy"; 
     
    var dragImage = document.getElementById("imageOfGeorge"); 
    var dragFile = new air.File(dragImage.src); 
    event.dataTransfer.setData("text/plain","A picture of George"); 
    event.dataTransfer.setData("image/x-vnd.adobe.air.bitmap", dragImage); 
    event.dataTransfer.setData("application/x-vnd.adobe.air.file-list", 
                                new Array(dragFile)); 
}
注: 调用 dataTransfer 对象的 setData() 方法时,默认拖放行为不会添加任何数据。