رویداد ondrag
تعریف و استفاده
رویداد ondrag وقتی عنصر یا انتخاب متن کشیده میشود، رخ میدهد.
کشیدن و رها کردن یکی از کاربردیترین ویژگیهای HTML5 است. این بدان معناست که وقتی یک شیء را "گرفتید" و به یک مکان دیگر کشیدید. برای یادگیری بیشتر، لطفاً ما را در مورد کشیدن و رها کردن HTML5توضیحات HTML استفاده کنید.
توضیح:برای اینکه عنصری قابل کشیدن باشد، از کلید جهانی ویژگی draggable HTML5.
توضیح:به طور پیشفرض، لینکها و تصاویر قابل کشیدن هستند و نیازی به ویژگی draggable نیست.
در مراحل مختلف عملیات کشیدن و رها کردن، تعداد زیادی رویداد استفاده میشوند و ممکن است رخ دهند:
رویدادهایی که روی هدف کشیدهشده (عنصر منبع) رخ میدهند:
- ondragstart - وقتی کاربر شروع به کشیدن عنصر میکند، رخ میدهد
- ondrag - وقتی عنصر کشیده میشود، رخ میدهد
- ondragend - وقتی کاربر عنصر کشیده شده را به پایان میرساند، رخ میدهد
رویدادهایی که روی هدف قرار میگیرند:
- ondragenter - وقتی عنصر کشیده شده به داخل هدف وارد میشود، رخ میدهد
- ondragover - وقتی عنصر کشیده شده روی هدف قرار دارد، رخ میدهد
- ondragleave - وقتی عنصر کشیده شده از هدف خارج میشود، رخ میدهد
- ondrop - وقتی عنصر کشیده شده روی هدف قرار میگیرد، رخ میدهد
توضیح:وقتی عناصر کشیده میشوند، رویداد ondrag هر 350 میلیثانیه یک بار فعال میشود.
مثال
وقتی عناصر <p> کشیده میشوند، جاوااسکریپت اجرا میشود:
<p draggable="true" ondrag="myFunction(event)">بکش من!</p>
در پایین صفحه نمونههای بیشتری از TIY وجود دارد.
منطق
در HTML:
<عنصر ondrag="myScript">
در جاوااسکریپت:
عنصر.ondrag = function(){myScript};
در جاوااسکریپت، از روش addEventListener() استفاده میشود:
عنصر.addEventListener("drag", myScript);
توضیح:نسخهی Internet Explorer 8 یا قدیمیتر از پشتیبانی آن پشتیبانی نمیکند addEventListener() method.
Technical details
Bubble: | Supported |
---|---|
Cancelable: | Supported |
Event type: | DragEvent |
Supported HTML tags: | All HTML elements |
DOM version: | Level 3 Events |
Browser support
The numbers in the table indicate the first browser version that fully supports the event.
Event | Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|---|
ondrag | 4.0 | 9.0 | 3.5 | 6.0 | 12.0 |
More examples
Demonstration of all possible drag and drop events:
<p draggable="true" id="dragtarget">Drag me!</p> <div class="droptarget">Drop here!</div> <script> /* ----------------- Events triggered on the drag target ----------------- */ document.addEventListener("dragstart", function(event) { // \+\"The dataTransfer.setData() method sets the data type and value of the data being dragged\+ event.dataTransfer.setData("Text", event.target.id); // \+\"Output some text when the p element starts to drag\+ document.getElementById("demo").innerHTML = "+\"Started to drag the p element.\"+; // \+\"Change the opacity of the draggable element\+ event.target.style.opacity = "+\"0.4\"+; }); // \+\"Change the output text color when dragging the p element\+ document.addEventListener("drag", function(event) { document.getElementById("demo").style.color = "+\"red\"+; }); // \+\"Complete dragging the p element and output some text and reset opacity\+ document.addEventListener("dragend", function(event) { document.getElementById("demo").innerHTML = "+\"Finished dragging the p element.\"+; event.target.style.opacity = "1"; }); /* ----------------- رویدادهایی که در هدف قرار دادن فعال میشوند ----------------- */ // هنگامی که عنصر قابل حمل p وارد droptarget میشود، لبههای DIV را تغییر دهید document.addEventListener("dragenter", function(event) { if ( event.target.className == "droptarget" ) { event.target.style.border = "3px dotted red"; } }); // به طور پیشفرض، نمیتوان دادهها/عناصر را در عناصر دیگر قرار داد. برای اجازه دادن به قرار دادن، باید پردازش پیشفرض عناصر را متوقف کنیم document.addEventListener("dragover", function(event) { event.preventDefault(); }); // هنگامی که عنصر قابل حمل p از droptarget خارج میشود، لبههای DIV را تنظیم کنید document.addEventListener("dragleave", function(event) { if ( event.target.className == "droptarget" ) { event.target.style.border = ""; } }); /* در هنگام قرار دادن - جلوگیری از پردازش پیشفرض مرورگر برای دادهها (در حالت پیشفرض به عنوان لینک باز میشود) رنگ متن خروجی و رنگ لبه DIV را تنظیم کنید از روش dataTransfer.getData() برای دریافت داده قابل حمل استفاده کنید داده قابل حمل، شناسه عنصر قابل حمل است ("drag1") به عنصر قرار داده شده، عنصر قابل حمل را متصل کنید */ document.addEventListener("drop", function(event) { event.preventDefault(); if ( event.target.className == "droptarget" ) { document.getElementById("demo").style.color = ""; event.target.style.border = ""; var data = event.dataTransfer.getData("Text"); event.target.appendChild(document.getElementById(data)); } }); </script>