Files
wangxiaowei 5d7b75a14e first commit
2025-12-09 13:35:21 +08:00

756 lines
15 KiB
JSON

{
"title":"Drag and Drop",
"description":"Method of easily dragging and dropping elements on a page, requiring minimal JavaScript.",
"spec":"https://html.spec.whatwg.org/multipage/interaction.html#dnd",
"status":"ls",
"links":[
{
"url":"https://html5doctor.com/native-drag-and-drop/",
"title":"HTML5 Doctor article"
},
{
"url":"https://nettutsplus.s3.amazonaws.com/64_html5dragdrop/demo/index.html",
"title":"Shopping cart demo"
},
{
"url":"https://webplatform.github.io/docs/dom/DragEvent",
"title":"WebPlatform Docs"
},
{
"url":"https://github.com/MihaiValentin/setDragImage-IE",
"title":"Polyfill for setDragImage in IE"
},
{
"url":"https://github.com/timruffles/ios-html5-drag-drop-shim",
"title":"iOS/Android shim for HTML 5 drag'n'drop"
}
],
"bugs":[
{
"description":"Chrome strips out newlines from `text/uri-list` [see bug](https://code.google.com/p/chromium/issues/detail?id=239745)"
},
{
"description":"In Chrome, `DataTransfer.addElement` is not implemented. There is no other way to implement a draggable object which updates during the drag due to some other circumstances (e.g. changes color on a valid drop spot), as it is just a static image if `addElement` is not supported."
},
{
"description":"In Firefox, an element won't drag unless the `dragstart` handler sets `dataTransfer` data (even if it doesn't get retrieved). [Test case](https://codepen.io/michai/pen/NwORqO)"
},
{
"description":"In Firefox, drag and drop does not work when the page is served as `application/xhtml+xml` [Mozilla Bug #751778](https://bugzilla.mozilla.org/show_bug.cgi?id=751778), [Mozilla Bug #1106160](https://bugzilla.mozilla.org/show_bug.cgi?id=1106160)"
},
{
"description":"In Firefox, the `dragstart` event does not fire on `button` elements. This effectively disables drag and drop for `button` elements."
},
{
"description":"Safari doesn't implement the `DragEvent` interface. It adds a `dataTransfer` property to `MouseEvent` instead. See [WebKit bug #103423](https://bugs.webkit.org/show_bug.cgi?id=103423)."
},
{
"description":"In Safari 8, after setting `event.dataTransfer.dropEffect`, the value in the `drop` event is always `'none'`"
},
{
"description":"In IE9-10, the `draggable` attribute could be effectively applied for `a` and `img` elements. For `div` and `span` elements you should call `element.dragDrop()` to start drag event."
},
{
"description":"In IE9-11, using `\"text/plain\"` as the format for `event.dataTransfer.setData` and `event.dataTransfer.getData` reportedly does not work and causes a JS error. The format needs to be `\"text\"`, which seems to work in all the mainstream browsers (Chrome, Safari, Firefox, IE9-11, Edge)."
}
],
"categories":[
"HTML5"
],
"stats":{
"ie":{
"5.5":"a #1 #3",
"6":"a #1 #3",
"7":"a #1 #3",
"8":"a #1 #3",
"9":"a #1 #3",
"10":"a #2 #3",
"11":"a #2 #3"
},
"edge":{
"12":"a #2",
"13":"a #2",
"14":"a #2",
"15":"a #2",
"16":"a #2",
"17":"a #2",
"18":"y",
"79":"y",
"80":"y",
"81":"y",
"83":"y",
"84":"y",
"85":"y",
"86":"y",
"87":"y",
"88":"y",
"89":"y",
"90":"y",
"91":"y",
"92":"y",
"93":"y",
"94":"y",
"95":"y",
"96":"y",
"97":"y",
"98":"y",
"99":"y",
"100":"y",
"101":"y",
"102":"y",
"103":"y",
"104":"y",
"105":"y",
"106":"y",
"107":"y",
"108":"y",
"109":"y",
"110":"y",
"111":"y",
"112":"y",
"113":"y",
"114":"y",
"115":"y",
"116":"y",
"117":"y",
"118":"y",
"119":"y",
"120":"y",
"121":"y",
"122":"y",
"123":"y",
"124":"y",
"125":"y",
"126":"y",
"127":"y",
"128":"y",
"129":"y",
"130":"y",
"131":"y",
"132":"y",
"133":"y",
"134":"y",
"135":"y",
"136":"y",
"137":"y",
"138":"y",
"139":"y",
"140":"y",
"141":"y",
"142":"y"
},
"firefox":{
"2":"p",
"3":"p",
"3.5":"y",
"3.6":"y",
"4":"y",
"5":"y",
"6":"y",
"7":"y",
"8":"y",
"9":"y",
"10":"y",
"11":"y",
"12":"y",
"13":"y",
"14":"y",
"15":"y",
"16":"y",
"17":"y",
"18":"y",
"19":"y",
"20":"y",
"21":"y",
"22":"y",
"23":"y",
"24":"y",
"25":"y",
"26":"y",
"27":"y",
"28":"y",
"29":"y",
"30":"y",
"31":"y",
"32":"y",
"33":"y",
"34":"y",
"35":"y",
"36":"y",
"37":"y",
"38":"y",
"39":"y",
"40":"y",
"41":"y",
"42":"y",
"43":"y",
"44":"y",
"45":"y",
"46":"y",
"47":"y",
"48":"y",
"49":"y",
"50":"y",
"51":"y",
"52":"y",
"53":"y",
"54":"y",
"55":"y",
"56":"y",
"57":"y",
"58":"y",
"59":"y",
"60":"y",
"61":"y",
"62":"y",
"63":"y",
"64":"y",
"65":"y",
"66":"y",
"67":"y",
"68":"y",
"69":"y",
"70":"y",
"71":"y",
"72":"y",
"73":"y",
"74":"y",
"75":"y",
"76":"y",
"77":"y",
"78":"y",
"79":"y",
"80":"y",
"81":"y",
"82":"y",
"83":"y",
"84":"y",
"85":"y",
"86":"y",
"87":"y",
"88":"y",
"89":"y",
"90":"y",
"91":"y",
"92":"y",
"93":"y",
"94":"y",
"95":"y",
"96":"y",
"97":"y",
"98":"y",
"99":"y",
"100":"y",
"101":"y",
"102":"y",
"103":"y",
"104":"y",
"105":"y",
"106":"y",
"107":"y",
"108":"y",
"109":"y",
"110":"y",
"111":"y",
"112":"y",
"113":"y",
"114":"y",
"115":"y",
"116":"y",
"117":"y",
"118":"y",
"119":"y",
"120":"y",
"121":"y",
"122":"y",
"123":"y",
"124":"y",
"125":"y",
"126":"y",
"127":"y",
"128":"y",
"129":"y",
"130":"y",
"131":"y",
"132":"y",
"133":"y",
"134":"y",
"135":"y",
"136":"y",
"137":"y",
"138":"y",
"139":"y",
"140":"y",
"141":"y",
"142":"y",
"143":"y",
"144":"y",
"145":"y",
"146":"y",
"147":"y",
"148":"y"
},
"chrome":{
"4":"y",
"5":"y",
"6":"y",
"7":"y",
"8":"y",
"9":"y",
"10":"y",
"11":"y",
"12":"y",
"13":"y",
"14":"y",
"15":"y",
"16":"y",
"17":"y",
"18":"y",
"19":"y",
"20":"y",
"21":"y",
"22":"y",
"23":"y",
"24":"y",
"25":"y",
"26":"y",
"27":"y",
"28":"y",
"29":"y",
"30":"y",
"31":"y",
"32":"y",
"33":"y",
"34":"y",
"35":"y",
"36":"y",
"37":"y",
"38":"y",
"39":"y",
"40":"y",
"41":"y",
"42":"y",
"43":"y",
"44":"y",
"45":"y",
"46":"y",
"47":"y",
"48":"y",
"49":"y",
"50":"y",
"51":"y",
"52":"y",
"53":"y",
"54":"y",
"55":"y",
"56":"y",
"57":"y",
"58":"y",
"59":"y",
"60":"y",
"61":"y",
"62":"y",
"63":"y",
"64":"y",
"65":"y",
"66":"y",
"67":"y",
"68":"y",
"69":"y",
"70":"y",
"71":"y",
"72":"y",
"73":"y",
"74":"y",
"75":"y",
"76":"y",
"77":"y",
"78":"y",
"79":"y",
"80":"y",
"81":"y",
"83":"y",
"84":"y",
"85":"y",
"86":"y",
"87":"y",
"88":"y",
"89":"y",
"90":"y",
"91":"y",
"92":"y",
"93":"y",
"94":"y",
"95":"y",
"96":"y",
"97":"y",
"98":"y",
"99":"y",
"100":"y",
"101":"y",
"102":"y",
"103":"y",
"104":"y",
"105":"y",
"106":"y",
"107":"y",
"108":"y",
"109":"y",
"110":"y",
"111":"y",
"112":"y",
"113":"y",
"114":"y",
"115":"y",
"116":"y",
"117":"y",
"118":"y",
"119":"y",
"120":"y",
"121":"y",
"122":"y",
"123":"y",
"124":"y",
"125":"y",
"126":"y",
"127":"y",
"128":"y",
"129":"y",
"130":"y",
"131":"y",
"132":"y",
"133":"y",
"134":"y",
"135":"y",
"136":"y",
"137":"y",
"138":"y",
"139":"y",
"140":"y",
"141":"y",
"142":"y",
"143":"y",
"144":"y",
"145":"y",
"146":"y"
},
"safari":{
"3.1":"y",
"3.2":"y",
"4":"y",
"5":"y",
"5.1":"y",
"6":"y",
"6.1":"y",
"7":"y",
"7.1":"y",
"8":"y",
"9":"y",
"9.1":"y",
"10":"y",
"10.1":"y",
"11":"y",
"11.1":"y",
"12":"y",
"12.1":"y",
"13":"y",
"13.1":"y",
"14":"y",
"14.1":"y",
"15":"y",
"15.1":"y",
"15.2-15.3":"y",
"15.4":"y",
"15.5":"y",
"15.6":"y",
"16.0":"y",
"16.1":"y",
"16.2":"y",
"16.3":"y",
"16.4":"y",
"16.5":"y",
"16.6":"y",
"17.0":"y",
"17.1":"y",
"17.2":"y",
"17.3":"y",
"17.4":"y",
"17.5":"y",
"17.6":"y",
"18.0":"y",
"18.1":"y",
"18.2":"y",
"18.3":"y",
"18.4":"y",
"18.5-18.6":"y",
"26.0":"y",
"26.1":"y",
"26.2":"y",
"TP":"y"
},
"opera":{
"9":"p",
"9.5-9.6":"p",
"10.0-10.1":"p",
"10.5":"p",
"10.6":"p",
"11":"p",
"11.1":"p",
"11.5":"p",
"11.6":"p",
"12":"y",
"12.1":"y",
"15":"y",
"16":"y",
"17":"y",
"18":"y",
"19":"y",
"20":"y",
"21":"y",
"22":"y",
"23":"y",
"24":"y",
"25":"y",
"26":"y",
"27":"y",
"28":"y",
"29":"y",
"30":"y",
"31":"y",
"32":"y",
"33":"y",
"34":"y",
"35":"y",
"36":"y",
"37":"y",
"38":"y",
"39":"y",
"40":"y",
"41":"y",
"42":"y",
"43":"y",
"44":"y",
"45":"y",
"46":"y",
"47":"y",
"48":"y",
"49":"y",
"50":"y",
"51":"y",
"52":"y",
"53":"y",
"54":"y",
"55":"y",
"56":"y",
"57":"y",
"58":"y",
"60":"y",
"62":"y",
"63":"y",
"64":"y",
"65":"y",
"66":"y",
"67":"y",
"68":"y",
"69":"y",
"70":"y",
"71":"y",
"72":"y",
"73":"y",
"74":"y",
"75":"y",
"76":"y",
"77":"y",
"78":"y",
"79":"y",
"80":"y",
"81":"y",
"82":"y",
"83":"y",
"84":"y",
"85":"y",
"86":"y",
"87":"y",
"88":"y",
"89":"y",
"90":"y",
"91":"y",
"92":"y",
"93":"y",
"94":"y",
"95":"y",
"96":"y",
"97":"y",
"98":"y",
"99":"y",
"100":"y",
"101":"y",
"102":"y",
"103":"y",
"104":"y",
"105":"y",
"106":"y",
"107":"y",
"108":"y",
"109":"y",
"110":"y",
"111":"y",
"112":"y",
"113":"y",
"114":"y",
"115":"y",
"116":"y",
"117":"y",
"118":"y",
"119":"y",
"120":"y",
"121":"y",
"122":"y"
},
"ios_saf":{
"3.2":"n",
"4.0-4.1":"n",
"4.2-4.3":"n",
"5.0-5.1":"n",
"6.0-6.1":"n",
"7.0-7.1":"n",
"8":"n",
"8.1-8.4":"n",
"9.0-9.2":"n",
"9.3":"n",
"10.0-10.2":"n",
"10.3":"n",
"11.0-11.2":"n",
"11.3-11.4":"n",
"12.0-12.1":"n",
"12.2-12.5":"n",
"13.0-13.1":"n",
"13.2":"n",
"13.3":"n",
"13.4-13.7":"n",
"14.0-14.4":"n",
"14.5-14.8":"n",
"15.0-15.1":"y",
"15.2-15.3":"y",
"15.4":"y",
"15.5":"y",
"15.6-15.8":"y",
"16.0":"y",
"16.1":"y",
"16.2":"y",
"16.3":"y",
"16.4":"y",
"16.5":"y",
"16.6-16.7":"y",
"17.0":"y",
"17.1":"y",
"17.2":"y",
"17.3":"y",
"17.4":"y",
"17.5":"y",
"17.6-17.7":"y",
"18.0":"y",
"18.1":"y",
"18.2":"y",
"18.3":"y",
"18.4":"y",
"18.5-18.6":"y",
"26.0":"y",
"26.1":"y"
},
"op_mini":{
"all":"n"
},
"android":{
"2.1":"n",
"2.2":"n",
"2.3":"n",
"3":"n",
"4":"n",
"4.1":"n",
"4.2-4.3":"n",
"4.4":"n",
"4.4.3-4.4.4":"n",
"142":"y #4"
},
"bb":{
"7":"n",
"10":"n"
},
"op_mob":{
"10":"p",
"11":"p",
"11.1":"p",
"11.5":"p",
"12":"p",
"12.1":"y",
"80":"y #4"
},
"and_chr":{
"142":"y #4"
},
"and_ff":{
"144":"n"
},
"ie_mob":{
"10":"y",
"11":"y"
},
"and_uc":{
"15.5":"y #4"
},
"samsung":{
"4":"n",
"5.0-5.4":"n",
"6.2-6.4":"n",
"7.2-7.4":"n",
"8.2":"n",
"9.2":"n",
"10.1":"n",
"11.1-11.2":"n",
"12.0":"n",
"13.0":"n",
"14.0":"n",
"15.0":"n",
"16.0":"n",
"17.0":"n",
"18.0":"n",
"19.0":"n",
"20":"n",
"21":"n",
"22":"n",
"23":"n",
"24":"n",
"25":"n",
"26":"n",
"27":"n",
"28":"n",
"29":"n"
},
"and_qq":{
"14.9":"y"
},
"baidu":{
"13.52":"n"
},
"kaios":{
"2.5":"n",
"3.0-3.1":"n"
}
},
"notes":"`dataTransfer.items` only supported by Chrome.\r\n\r\nCurrently no browser supports the `dropzone` attribute.\r\n\r\nFirefox supports any kind of DOM elements for `.setDragImage`. Chrome must have either an `HTMLImageElement` or any kind of DOM Element attached to the DOM _and within the viewport_ of the browser for `.setDragImage`.",
"notes_by_num":{
"1":"Partial support refers to no support for the `dataTransfer.files` or `.types` objects",
"2":"Partial support refers to not supporting `.setDragImage`",
"3":"Partial support refers to limited supported formats for `dataTransfer.setData`/`getData`.",
"4":"Not supported in Chromium browsers on Android 6 or older."
},
"usage_perc_y":92.4,
"usage_perc_a":0.37,
"ucprefix":false,
"parent":"",
"keywords":"draganddrop, draggable",
"chrome_id":"",
"shown":true
}