搜尋
首頁web前端H5教程HTML5實戰與剖析之原生拖曳(三dataTransfer物件)


  HTML5拖曳的資料傳輸

  雖然透過dragstart、drag和dragend事件實現了原生拖曳。但這只是拖曳,在IE6和IE7中還是有些拖曳問題,也沒有實現資料的交換。為了實現資料的交換,IE5引入了dataTransfer物件。 dataTransfer物件是事件物件的屬性,用於從被拖曳元素相放置目標傳遞字串格式的資料。因為它是事件物件的屬性,所以只能在拖放事件的事件處理程序中存取dataTransfer物件。在事件處理程序中,可以使用這個物件的屬性和方法來完善拖放功能。

  dataTransfer物件有兩個主要的方法:getData()方法和setData()方法。從這兩種方法的英文字面意思上就能大概猜出來其用途。 getData()方法可以取得由setData()方法儲存的值。 setData()方法的第一個參數,也是getData()方法唯一的一個參數,是用來保存資料類型的字串,取值是”text”或”URL”。

  IE只定義了”text”或”URL”兩種有效的資料類型,而HTML5則對此加以擴展,允許指定各種MIME類型。考慮到向後相容,HTML5也支援”text”或”URL”,但這兩種類型會被映射為”text/plain”或“text/url-list”。

  實際上,dataTransfer物件可以為每種MIME類型保存一個值。也就是說同事在這個物件中保存一段文字和一個URL不會有其他問題。不過,保存在dataTransfer物件中的資料只能在drop事件處理程序中讀取。如果在ondrop處理程序中沒有讀取數據,那就是dataTransfer物件已經被銷毀,數據也就隨之遺失了。

  在拖曳文字方塊中的文字時,瀏覽器會呼叫setData()方法,將拖曳的文字以”text”格式儲存在dataTransfer物件中。類似地,在拖放連結或圖像時,會呼叫setData()方法並儲存URL。然後,當這些元素被拖曳到放置目標時,就可以透過getData()方法讀到這些資料。當然,身為開發人員,你也可以透過dragstart事件處理程序中呼叫setData(),手動保存自己要傳輸的數據,以便將來使用。

  將資料保存在文字和保存為URL是有區別的。如果將資料儲存為文字格式,那麼資料不會得到任何特殊處理。如果儲存為URL格式,瀏覽器會將其當成網頁中的連結。如果你將這個URL放置到另一個瀏覽器視窗中,就可以開啟該URL。

  Firefox 5及之前版本是不能將”url”和”text”映射為””和”text/plain”。但是卻能把”Text”(T大寫)映射為”text/plain”。為了更好地在跨瀏覽器的情況下從dataTransfer物件取得數據,最好在取得URL數據時檢測兩個值,而在取得文字資料時使用」Text」。

  注意,一定要把短資料型別放在前面,因為IE10及之前的版本仍然不支援擴充的MIME型別名,而它們在遇到無法辨識的資料型別時,會報錯。不過」text」或」URL」取值只有IE是強制的,在火狐3.6+、Chrome和Opera中設定其他任意值的字串也能正常執行。

  dropEffect屬性和effectAllowed屬性

  運用dataTransfer對象,不僅能傳輸數據,還能透過dataTransfer對象確定被拖曳的元素以及作為放置目標的元素能夠接收什麼操作。要實現這樣的功能就用到了dropEffect屬性和effectAllowed屬性。

  dropEffect屬性

  其中,透過dropEffect屬性可以知道被拖曳的元素能夠執行哪一種行為。這個屬性的四個值如下:

  none:不能把拖曳的元素放在這裡。這是除了文字方塊之外所有元素預設的值。

  move:應該把拖曳的元素移到放置目標。

  copy:應該把拖曳的元素複製到放置目標。

  link:放置目標會打開拖動的元素(但拖動的元素必須是個鏈接,有URL地址)。

  把元素拖曳到放置目標上的時候,以上每一個值都會導致遊標顯示為不同的符號。

  effectAllowed屬性

  光有dropEffect屬性是不咋管用的。只有結合effectAllowed屬性一起使用才能發揮功效。 effectAllowed屬性表示允許拖曳元素的哪一種行為(dropEffect)。 effectAllowed屬性也有很多值,其值如下:

  uninitialized:沒有給被拖曳元素設定任何放置行為。

  none:被拖曳的元素不能有任何行為。

  copy:只允許值為”copy”的dropEffect。

  link:只允許值為」link」的dropEffect。

  move:只允許值為”move”的dropEffect。

  copyLink:允許值為”copy”和”link”的dropEffect。

  copyMove:允許值為”copy”和”move”的dropEffect。

  linkMove:允許值為”link”和”move”的dropEffect。

  all:允許任意dropEffect。

  要設定effectAllowed屬性必須在ondragstart事件處理程序中設定。小範例如下

  HTML碼

<ul>
	<li draggable="true">梦龙小站</li>
	<li draggable="true">梦龙小站</li>
	<li draggable="true">梦龙小站</li>
</ul>
<a href="http://www.baidu.com/">梦龙小站</a>
<p id="p1">梦龙小站</p>

  CSS代碼

li{ width:100px; height:30px; border:1px #000000 solid; margin:20px; list-style:none;}
#p1{ width:100px; height:100px; background:red; margin:300px;}

以上就是HTML5實戰與剖析之原生拖曳(三dataTransfer物件)的內容,更多相關內容請關注PHP中文網(www.php.cn)!


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
掌握microdata:HTML5的分步指南掌握microdata:HTML5的分步指南May 14, 2025 am 12:07 AM

Microdatainhtml5enhancesseoanduserexperienceByByBybyBystructuredDatatoSearchEngines.1)useIteMscope,itemType,anditempropattributestomarkupcontentlikeSoreRoductSssSssSoRorevents.2)

HTML5表格中有什麼新功能?探索新輸入類型HTML5表格中有什麼新功能?探索新輸入類型May 13, 2025 pm 03:45 PM

html5introducesnewinputtypesthatenhanceSerexperience,簡化開發和iMproveAccessibility.1)自動validatesemailformat.2)優化優化,優化OmportizeSmizesemizesemizesemizesemizesemizeSmobobileWithAnumericKeyPad.3)和Simimplifydateandtimeputientupits,並重新替代了Forcustemolcustemolcustene。

理解H5:含義和意義理解H5:含義和意義May 11, 2025 am 12:19 AM

H5是HTML5,是HTML的第五個版本。 HTML5提升了網頁的表現力和交互性,引入了語義化標籤、多媒體支持、離線存儲和Canvas繪圖等新特性,推動了Web技術的發展。

H5:可訪問性和網絡標準合規性H5:可訪問性和網絡標準合規性May 10, 2025 am 12:21 AM

無障礙訪問和網絡標準遵循對網站至關重要。 1)無障礙訪問確保所有用戶都能平等訪問網站,2)網絡標準遵循提高網站的可訪問性和一致性,3)實現無障礙訪問需使用語義化HTML、鍵盤導航、顏色對比度和替代文本,4)遵循這些原則不僅是道德和法律要求,還能擴大用戶群體。

HTML中的H5標籤是什麼?HTML中的H5標籤是什麼?May 09, 2025 am 12:11 AM

HTML中的H5標籤是第五級標題,用於標記較小的標題或子標題。 1)H5標籤幫助細化內容層次,提升可讀性和SEO。 2)結合CSS可定製樣式,增強視覺效果。 3)合理使用H5標籤,避免濫用,確保內容結構邏輯性。

H5代碼:Web結構的初學者指南H5代碼:Web結構的初學者指南May 08, 2025 am 12:15 AM

HTML5構建網站的方法包括:1.使用語義化標籤定義網頁結構,如、、等;2.嵌入多媒體內容,使用和標籤;3.應用表單驗證和本地存儲等高級功能。通過這些步驟,你可以創建一個結構清晰、功能豐富的現代網頁。

H5代碼結構:組織內容以實現可讀性H5代碼結構:組織內容以實現可讀性May 07, 2025 am 12:06 AM

通過合理的H5代碼結構可以讓頁面在眾多內容中脫穎而出。 1)使用語義化標籤如、、等組織內容,使結構清晰。 2)通過CSS佈局如Flexbox或Grid控制頁面在不同設備上的呈現效果。 3)實現響應式設計,確保頁面在不同屏幕尺寸上自適應。

H5與較舊的HTML版本:比較H5與較舊的HTML版本:比較May 06, 2025 am 12:09 AM

HTML5(H5)與舊版本HTML的主要區別包括:1)H5引入了語義化標籤,2)支持多媒體內容,3)提供離線存儲功能。 H5通過新標籤和API增強了網頁的功能和表現力,如和標籤,提高了用戶體驗和SEO效果,但需注意兼容性問題。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具