拖拽操作

您所在的位置:网站首页 dragqueen图片 拖拽操作

拖拽操作

2024-02-01 17:22| 来源: 网络整理| 查看: 265

所有拖拽事件都有一个名为 dataTransfer 的属性,它持有拖拽数据(dataTransfer 是一个 DataTransfer 对象)。

当拖拽发生时,数据必须与被拖拽的项目相关联。例如,当在文本框中拖拽选定的文本时,与拖拽数据项相关联的数据就是文本本身。类似地,当在 Web 页面上拖拽链接时,拖拽数据项就是链接的 URL。

DataTransfer 包含两个信息,数据的类型(或格式)和数据值。格式是一个类型字符串(例如文本数据的格式是 text/plain (en-US)),值是一个文本字符串。拖拽开始时,你提供数据类型和数据值。在拖拽过程中,在 dragenter 和 dragover 事件监听程序中,你使用拖拽数据的类型来检查是否允许放置(drop)。例如,接受链接的放置目标将检查链接类型 text/uri-list (en-US)。在放置事件中,监听程序将取回拖拽数据,并将其插入到放置位置。

DataTransfer 的 types 属性返回一个类似 DOMString 的 MIME-type 的列表,如 text/plain (en-US) 或 image/jpeg (en-US)。你还可以创建自己的类型。最常用的类型列在文章 推荐拖拽类型 中。

一次拖拽可能包括几个不同类型的数据项。这使得数据可以更具体的类型提供,通常是自定义类型,但若放置目标不支持这些具体类型,则会提供回退(fallback)数据。通常情况下,最不具体的类型是 text/plain (en-US) 类型的普通文本数据,即一些简单的文本表示。

要在 dataTransfer 中设置拖拽数据项,使用 setData() 方法。这个方法接收两个参数,即数据类型和数据值。例如:

jsevent.dataTransfer.setData("text/plain", "Text to drag");

在这个例子中,数据值是“Text to drag”,数据类型是 text/plain (en-US) 格式。

你可以提供多种格式的数据。要做到这一点,可以用不同的格式多次调用 setData() 方法。你应该传入尽量具体的格式。

jsconst dt = event.dataTransfer; dt.setData("application/x.bookmark", bookmarkString); dt.setData("text/uri-list", "http://www.mozilla.org"); dt.setData("text/plain", "http://www.mozilla.org");

在这里,数据被添加到三种不同的类型中。第一个类型 application/x-bookmark 是一种自定义类型。其他应用程序不会支持这个类型,但你可以在同一站点或同以应用程序之间使用自定义类型。

通过提供其他类型的数据,我们还可使用不那么具体的形式支持拖拽到其他应用程序。application/x.bookmark 类型可以提供更多的数据,以便在应用程序中使用,而另两个类型则只包含一个 URL 或文本版本。

注意,在本例中,text/uri-list (en-US) 和 text/plain (en-US) 包含相同的数据。这通常是正确的,但不一定要这么做。

如果你试图以相同的格式添加两次数据,那么新的数据将替换旧的数据。你可以使用 clearData() 方法清除这些数据,该方法接收一个参数,即要删除的数据类型。

jsevent.dataTransfer.clearData("text/uri-list");

clearData() 方法的 type 参数是可选的。如果没有声明 type,则所有类型的数据都会被删除。如果拖拽不包含拖拽数据项,或者所有的数据项都被清除,那么就不会出现拖拽行为。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3