亚洲免费不卡_在线视频精品_国产尤物精品_久久久久网址_久久精品91_欧美va天堂在线_狠狠入ady亚洲精品_亚洲午夜精品福利_国产精品草草_午夜精品久久99蜜桃的功能介绍

突襲HTML5之Javascript API擴展4—拖拽(Drag/Drop)概述
來源:易賢網 閱讀:2121 次 日期:2016-07-22 14:47:48
溫馨提示:易賢網小編為您整理了“突襲HTML5之Javascript API擴展4—拖拽(Drag/Drop)概述”,方便廣大網友查閱!

拖拽(Drag/Drop)是個非常普遍的功能。你可以抓住一個對象,并且拖動到你想放置的區域。很多javascript都類似實現了相關的功能,例如,jQueryUI的draganddrop組件。在HTML5中,拖拽(draganddrop)成為了標準操作,任何元素都支持。正因為這個功能太普遍了,所有的主流瀏覽器都支持這個操作。

啟用拖拽-draggable屬性

非常簡單,只需要將一個元素的拖動屬性修改為draggable,這個元素就支持拖動了,如下所示:

代碼如下:

<imgdraggable="true"/>

拖動中數據的傳遞

拖動的過程中,我們往往需要傳遞相應的邏輯數據來完成轉換的過程,這里主要是使用dataTransfer對象進行數據傳遞,下面先看看它的成員:

方法成員:

代碼如下:

setData(format,data):把被拖動的數據賦值給dataTransfer對象。

format:一個String型參數,指定被拖動數據的類型。該參數取值可以是“Text”(文本類型)和“URL”(URL類型)。該參數是大小寫無關的,所以傳入"text"與"Text"是一樣的。

data:一個變體類型參數,指定被拖動的數據。該數據可以是文本,圖片路徑,URL等等。

該函數有Boolean類型的返回值,true表示數據成功加到dataTransfer中,false代表不成功。如果需要,可以通過這個參數來決定是否應該繼續執行某些邏輯。

代碼如下:

getData(format):獲取dataTransfer中存放的拖動數據。

format意義與setData中的一樣,取值可以是"Text"(文本類型)和"URL"(URL類型)。

代碼如下:

clearData(format):移除指定類型的數據。

這里的format除了上面可以指定的"Text"(文本類型)和"URL"(URL類型)外,還可以取下列值:file-文件,html-html元素,image-圖片。

這個方法可以用于去選擇性的處理拖動的數據類型。

屬性成員:

代碼如下:

effectAllowed:設置或獲取數據源元素中的數據可以執行的操作。

屬性類型為字符串,取值范圍如下:

"copy"-復制數據.

"link"-鏈接數據.

"move"-移動數據

"copyLink"-復制或鏈接數據,由目標對象來確定。

"copyMove"-復制或移動數據,由目標對象來確定。

"linkMove"-鏈接或移動數據,由目標對象來確定。

"all"-所有的操作都是支持的。

"none"-禁止拖動。

"uninitialized"-默認值,采用默認的行為。

注意設置effectAllowed為none以后,拖動是禁止的,但是鼠標形狀還是顯示沒有可拖動的對象的形狀,如果想不顯示這個鼠標形狀,則需要將window的event事件的屬性returnValue設置為false。

代碼如下:

dropEffect:設置或獲取拖動的目標上允許的操作以及相關的鼠標形狀。

屬性類型為字符串,取值范圍如下:

"copy"-鼠標顯示為復制時的形狀;

"link"-鼠標顯示為連接的形狀;

"move"-鼠標顯示為移動的形狀。

"none"(默認值)-鼠標顯示為沒有拖動的形狀。

effectAllowed指定了數據源支持的操作,所以通常在ondragstart事件中指定。dropEffect指定了拖動放置的目標支持的操作,所以與effectAllowed配合,通常在拖動的目標上的ondragenter,ondragover和ondrop等事件中使用。

代碼如下:

files:返回拖動的文件的列表FileList。

types:ondragstart中發送的數據(被拖動的數據)類型的列表。

dataTransfer對象的存在,使得在拖動的數據源和目標元素之間傳遞邏輯數據變成了可能。通常我們使用setData方法在數據源元素的ondragstart事件中提供數據,然后再目標元素中,使用getData方法獲取數據。

拖動中觸發的事件

下面是一次拖拽會發生的事件,基本上事件的觸發順序也就是下面的順序:

代碼如下:

dragstart:要被拖拽的元素開始拖拽時觸發,這個事件對象是被拖拽元素。

drag:拖拽元素時觸發,這個事件對象是被拖拽元素。

dragenter:拖拽元素進入目標元素時觸發,這個事件對象是目標元素。

dragover:拖拽某元素在目標元素上移動時觸發,這個事件對象是目標元素。

dragleave:拖拽某元素離開目標元素時觸發,這個事件對象是目標元素。

drop:將被拖拽元素放在目標元素內時觸發,這個事件對象是目標元素。

dragend:在drop之后觸發,就是拖拽完畢時觸發,這個事件對象是被拖拽元素。

基本上事件的參數event都會傳入相關的元素,可以很方便的進行一些修改。這里,我們并不需要處理每個事件,通常只需要掛接主要的幾個事件即可。

拖動開始-ondragstart事件

從這個事件傳入的參數含有的信息非常豐富,從中可以很方便的獲取到被拖動的元素(event.Target);從中可以設置被拖動數據(event.dataTransfer.setData);所以你可以很方便實現拖動的背后邏輯(當然你綁定的時候也可以傳遞其他的參數)。

拖動過程中-ondrag,ondragover,ondragenter和ondragleave事件

ondrag事件的對象是被拖拽元素,通常這個事件處理的比較少。ondragenter事件是當拖動進入當前元素時發生,ondragleave事件是在當拖動離開當前元素時發生,ondragover事件是在拖動在當前元素中移動時發生。

這里只需要注意一點,因為默認情況下,瀏覽器是禁止元素drop的,所以為了讓元素可以drop,需要在這個函數中返回false或者調用event.preventDefault()方法。如下面的例子所示。

拖動結束-ondrop,ondragend事件

當可拖動的數據被drop的時候,drop事件觸發。drop結束后,dragend事件被觸發,這個事件使用的也相對少一點。

看一個簡單的例子:

代碼如下:

<!DOCTYPEHTML>

<html>

<head>

<scripttype="text/javascript">

functionallowDrop(ev){

ev.preventDefault();

}

functiondrag(ev){

ev.dataTransfer.setData("Text",ev.target.id);

}

functiondrop(ev){

vardata=ev.dataTransfer.getData("Text");

ev.target.appendChild(document.getElementById(data));

ev.preventDefault();

}

</script>

</head>

<body>

<divid="div1"ondrop="drop(event)"ondragover="allowDrop(event)"></div>

<imgid="drag1"src="img_logo.gif"draggable="true"ondragstart="drag(event)"width="336"height="69"/>

</body>

</html>

文件拖拽

上面的例子已經使用了dataTransfer的各種方法和屬性,下面再看網上的另外一個有趣的應用:拖拽一個圖片到網頁上,然后在網頁上顯示。這個應用用到了dataTransfer的files屬性。

代碼如下:

<!DOCTYPEHTML>

<html>

<head>

<metacharset="utf-8">

<title>HTML5拖放文件</title>

<style>

#section{font-family:"Georgia","微軟雅黑","華文中宋";}

.container{display:inline-block;min-height:200px;min-width:360px;color:#f30;padding:30px;border:3pxsolid#ddd;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;}

.preview{max-width:360px;}

#files-list{position:absolute;top:0;left:500px;}

#list{width:460px;}

#list.preview{max-width:250px;}

#listp{color:#888;font-size:12px;}

#list.green{color:#09c;}

</style>

</head>

<body>

<divid="section">

<p>把你的圖片拖到下面的容器內:</p>

<divid="container"class="container">

</div>

<divid="files-list">

<p>已經拖進過來的文件:</p>

<ulid="list"></ul>

</div>

</div>

<script>

if(window.FileReader){

varlist=document.getElementById('list'),

cnt=document.getElementById('container');

//判斷是否圖片

functionisImage(type){

switch(type){

case'image/jpeg':

case'image/png':

case'image/gif':

case'image/bmp':

case'image/jpg':

returntrue;

default:

returnfalse;

}

}

//處理拖放文件列表

functionhandleFileSelect(evt){

evt.stopPropagation();

evt.preventDefault();

varfiles=evt.dataTransfer.files;

for(vari=0,f;f=files[i];i++){

vart=f.type?f.type:'n/a',

reader=newFileReader(),

looks=function(f,img){

list.innerHTML+='<li><strong>'+f.name+'</strong>('+t+

')-'+f.size+'bytes<p>'+img+'</p></li>';

cnt.innerHTML=img;

},

isImg=isImage(t),

img;

//處理得到的圖片

if(isImg){

reader.onload=(function(theFile){

returnfunction(e){

img='<imgclass="preview"src="'+e.target.result+'"title="'+theFile.name+'"/>';

looks(theFile,img);

};

})(f)

reader.readAsDataURL(f);

}else{

img='"o((>ω<))o",你傳進來的不是圖片!!';

looks(f,img);

}

}

}

//處理插入拖出效果

functionhandleDragEnter(evt){this.setAttribute('style','border-style:dashed;');}

functionhandleDragLeave(evt){this.setAttribute('style','');}

//處理文件拖入事件,防止瀏覽器默認事件帶來的重定向

functionhandleDragOver(evt){

evt.stopPropagation();

evt.preventDefault();

}

cnt.addEventListener('dragenter',handleDragEnter,false);

cnt.addEventListener('dragover',handleDragOver,false);

cnt.addEventListener('drop',handleFileSelect,false);

cnt.addEventListener('dragleave',handleDragLeave,false);

}else{

document.getElementById('section').innerHTML='你的瀏覽器不支持啊,同學';

}

</script>

</body>

</html>

這個例子中使用了html5中的文件讀取API:FileReader對象;該對象提供了下列異步方法用于讀取文件:

1.FileReader.readAsBinaryString(fileBlob)

以二進制的方式讀取文件,result屬性會包含一個文件的二進制的格式

2.FileReader.readAsText(fileBlob,opt_encoding)

以文本的方式讀取文件,result屬性將會包含一個文件的文本格式,默認解碼參數是“utf-8”。

3.FileReader.readAsDataURL(file)

以URL形式讀取文件result將會包含一個文件的DataURL格式(圖片通常用這種方式)。

當使用上面的方法讀取文件后,會觸發下列事件:

代碼如下:

onloadstart,onprogress,onabort,onerror,onload,onloadend

這些事件都很簡單,需要的時候掛接就可以了。看下面的代碼示例:

代碼如下:

functionstartRead(){

//obtaininputelementthroughDOM

varfile=document.getElementById('file').files[0];

if(file){

getAsText(file);

}

}

functiongetAsText(readFile){

varreader=newFileReader();

//ReadfileintomemoryasUTF-16

reader.readAsText(readFile,"UTF-16");

//Handleprogress,success,anderrors

reader.onprogress=updateProgress;

reader.onload=loaded;

reader.onerror=errorHandler;

}

functionupdateProgress(evt){

if(evt.lengthComputable){

//evt.loadedandevt.totalareProgressEventproperties

varloaded=(evt.loaded/evt.total);

if(loaded<1){

//Increasetheprogbarlength

//style.width=(loaded*200)+"px";

}

}

}

functionloaded(evt){

//Obtainthereadfiledata

varfileString=evt.target.result;

//HandleUTF-16filedump

if(utils.regexp.isChinese(fileString)){

//ChineseCharacters+Namevalidation

}

else{

//runothercharsettest

}

//xhr.send(fileString)

}

functionerrorHandler(evt){

if(evt.target.error.name=="NotReadableErr"){

//Thefilecouldnotberead

}

}

這里也簡單說一下:普通的文件下載使用的就是window.open方法,例如:

代碼如下:

window.open('http://aaa.bbbb.com/ccc.rar','_blank')

更多信息請查看網頁制作
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點

版權所有:易賢網

亚洲免费不卡_在线视频精品_国产尤物精品_久久久久网址_久久精品91_欧美va天堂在线_狠狠入ady亚洲精品_亚洲午夜精品福利_国产精品草草_午夜精品久久99蜜桃的功能介绍
欧美午夜电影在线观看| 亚洲经典视频在线观看| 欧美久久久久久久| 欧美性色综合| 在线综合亚洲| 午夜国产一区| 国产日韩亚洲欧美精品| 牛夜精品久久久久久久99黑人| 欧美在线精品一区| 伊人久久综合| 久久一本综合频道| 99国产精品久久久久老师| 葵司免费一区二区三区四区五区| 亚洲日本久久| 国产精品sss| 久久青草久久| 国产精品免费一区二区三区在线观看 | 欧美日韩在线一区二区三区| 亚洲深夜福利| 亚洲国产一区二区三区高清 | 亚洲夜间福利| 久久久精品午夜少妇| 亚洲国产日韩欧美| 激情婷婷久久| 国语精品中文字幕| 国产精品分类| 一区在线免费观看| 亚洲婷婷在线| 亚洲午夜91| 欧美午夜国产| 欧美日韩爆操| 国精品一区二区| 欧美日韩另类综合| 欧美黄色aaaa| 欧美日一区二区三区在线观看国产免| 噜噜噜噜噜久久久久久91| 国产精品视频| 米奇777在线欧美播放| 久久国产欧美| 欧美激情五月| 在线观看亚洲| 中文在线不卡| 午夜一区二区三区不卡视频| 亚洲男人影院| 欧美在线播放一区| 国精品一区二区三区| 亚洲一级高清| 一区二区三区四区五区精品| 亚洲精品九九| 亚洲中午字幕| 欧美激情第六页| 一区免费在线| 国产毛片一区| 欧美日韩视频一区二区三区| 亚洲精品国产精品国自产观看| 99国产精品99久久久久久粉嫩| 亚洲少妇在线| 久久资源在线| 亚洲国产一区二区在线 | 黄色成人在线网址| 亚洲精品1区2区| 亚洲制服av| 欧美三级网页| 在线一区视频| 欧美精品麻豆| 国产一区二区黄色| 欧美午夜精品久久久久免费视| 亚洲国产日韩欧美| 老司机久久99久久精品播放免费| 欧美日韩在线高清| 国产欧美一级| 国内久久精品| 裸体一区二区| 在线播放精品| 久久综合福利| 国产一区二区三区久久久久久久久| 久久一区二区三区超碰国产精品| 在线成人www免费观看视频| 免费日韩视频| 亚洲精品欧洲| 欧美性色综合| 久久久www| 在线视频精品一区| 黄色成人在线网址| 欧美一区国产一区| 免费在线欧美黄色| 国产精品美女久久久| 激情婷婷欧美| 国产精品二区影院| 欧美一区二区视频在线| 国产免费成人| 国产欧美日韩综合一区在线观看 | 一区在线播放| 欧美区日韩区| 欧美+亚洲+精品+三区| 亚洲欧美精品| 亚洲专区一区二区三区| 99视频精品免费观看| 精品999日本| 黄色精品网站| 精品电影一区| 激情欧美日韩| 91久久夜色精品国产九色| 亚洲特色特黄| 红桃视频亚洲| 一区久久精品| 亚洲国产精品一区| 99精品国产福利在线观看免费 | 久久国产一区二区| 香蕉久久夜色精品国产| 亚洲制服av| 午夜综合激情| 欧美搞黄网站| 激情综合自拍| 亚洲欧洲日本国产| 9色精品在线| 国产亚洲毛片在线| 麻豆精品网站| 欧美日韩国产高清视频| 国语自产精品视频在线看8查询8| 国产一区二区三区四区老人| 亚洲调教视频在线观看| 亚洲成色精品| 国产农村妇女精品一区二区| 免费精品视频| 国产精品v亚洲精品v日韩精品 | 黄色工厂这里只有精品| 国内自拍视频一区二区三区 | 久久久综合香蕉尹人综合网| 久久一二三区| 亚洲午夜精品国产| 国产精品区一区| 看欧美日韩国产| 精品成人在线| 国产九区一区在线| 欧美二区在线| 99日韩精品| 女生裸体视频一区二区三区| 精品不卡视频| 久久av二区| 亚洲性人人天天夜夜摸| 亚洲一区网站| 亚洲性感美女99在线| 亚洲视频www| 国产精品va| 亚洲欧美日韩国产一区二区| 国产一区二区三区自拍| 国产亚洲毛片在线| 亚洲视频免费| 欧美成人dvd在线视频| 亚洲精品在线二区| 欧美日韩福利| 老鸭窝亚洲一区二区三区| 黄色欧美成人| 亚洲欧美综合| 久久精品一区二区国产| 91久久国产综合久久蜜月精品| 国产精品一区在线播放| 精品不卡视频| 欧美区国产区| 欧美在线91| 麻豆成人小视频| 国产亚洲二区| 亚洲精品韩国| 亚洲高清视频在线观看| 欧美日韩国产精品一卡| 久久久久se| 欧美在线综合| 欧美一区=区| 国产精品一区二区欧美| 中文有码久久| 国产三级精品在线不卡| 亚洲每日在线| 亚洲全部视频| 亚洲黄色精品| 亚洲韩日在线| 91久久中文| 亚洲开发第一视频在线播放| 好看的av在线不卡观看| 国产精品videossex久久发布| 久久人人超碰| 久久青草久久| 欧美在线视频一区二区三区| 久久夜色精品| 欧美精品激情| 激情视频一区| 99亚洲视频| 亚洲伊人网站| 久久婷婷国产综合尤物精品| 久久久久久久高潮| 老牛国产精品一区的观看方式| 久久成人免费| 午夜精品久久久久99热蜜桃导演| 欧美福利专区| 在线国产日韩| 国产精品久久久对白| 免费视频一区| 欧美日韩国产高清| 亚洲人成免费| 亚洲欧美日韩国产一区| 乱码第一页成人| 欧美午夜欧美| 一本久道久久久| 久久国产精品免费一区| 午夜激情一区| 99精品热6080yy久久| 免费久久99精品国产自在现线| 老司机精品视频网站| 国模一区二区三区| 在线综合亚洲| 你懂的网址国产 欧美| 亚洲第一在线| 久久婷婷丁香| 99综合精品| 欧美涩涩视频| 国产精品久久国产愉拍| 欧美激情精品久久久六区热门| 亚洲国产国产亚洲一二三| 国产精品一卡| 黄色国产精品| 久久综合狠狠| 国产日韩1区| 国产精品v亚洲精品v日韩精品 | 亚洲欧美国产不卡| 久久综合九色综合欧美狠狠| 在线播放豆国产99亚洲| 久久亚洲风情| 国产精品嫩草99av在线| 亚洲图片欧洲图片日韩av| 欧美亚洲免费在线| 亚洲美女视频在线免费观看| 久久综合五月| 欧美一级视频| 亚洲精品极品| 韩日欧美一区| 欧美一区免费| 美女国产一区| 国产婷婷精品| 99精品视频免费观看| 一区二区在线不卡| 亚洲午夜精品国产| 国产一区视频观看| 欧美精品网站| 欧美va天堂在线| 老司机午夜免费精品视频| 国产一区二区你懂的| 亚洲经典在线看| 在线不卡欧美| 亚洲精品韩国| 亚洲人成久久| 亚洲精品色图| 一本一道久久综合狠狠老精东影业| 亚洲视频福利| 黑人一区二区| 影音先锋久久精品| 伊人激情综合| 亚洲国产一区二区三区a毛片| 国产精品二区二区三区| 欧美大片一区| 国产精品激情| 一区视频在线看| 亚洲精品欧美| 亚洲自拍另类| 亚洲伊人网站| 久久影院亚洲| 欧美日韩另类综合| 激情丁香综合| 国产区欧美区日韩区| 亚洲一区二区三区免费在线观看| 国产一区二区高清不卡| 六月天综合网| 欧美91视频| 国产综合激情| 亚洲日本欧美在线| 亚洲专区免费| 欧美日本不卡| 夜夜嗨av一区二区三区网站四季av| 99国产精品| 久久久久.com| 伊人久久亚洲热| 国产农村妇女毛片精品久久莱园子 | 蜜乳av另类精品一区二区| 羞羞答答国产精品www一本 | 一本不卡影院| 亚洲影院免费| 欧美日韩在线精品| 99国产精品久久久久久久成人热| 一区二区三区视频在线播放| 欧美综合二区| 激情丁香综合| 麻豆91精品| 亚洲国产日韩欧美| 噜噜噜噜噜久久久久久91| 国产在线观看一区| 国产精品乱子乱xxxx| 欧美激情第六页| 亚洲毛片播放| 欧美激情成人在线| 国产亚洲在线观看| 国内精品福利| 午夜在线视频一区二区区别| 国产精品99免费看| 久久国产精品高清| 91久久夜色精品国产九色| 欧美69视频| 亚洲欧美网站| 中文在线不卡| 亚洲大胆视频| 欧美日韩一区二区三区在线观看免| 99精品视频免费观看| 国产一区视频观看| 欧美777四色影| 久久不射网站| 亚洲综合好骚| 亚洲精品影院| 极品裸体白嫩激情啪啪国产精品 | 亚洲日本激情| 国产一区再线| 欧美精品自拍| 欧美一区激情| 国产精品视频免费观看| 亚洲福利久久| 亚洲图色在线| 国模 一区 二区 三区| 久久久青草婷婷精品综合日韩| 亚洲色图自拍| 国产精品视频久久一区| 一本色道88久久加勒比精品| 一区视频在线看| 激情久久久久| 亚洲国产国产亚洲一二三| 国内精品久久久久久久97牛牛| 久久久福利视频| 另类国产ts人妖高潮视频| 免费日韩av| 欧美一区激情视频在线观看| 久久亚洲美女| 欧美在线高清| 欧美日韩精品免费观看| 欧美日韩国产一区精品一区| 狂野欧美一区| 欧美三级特黄| 狠狠色丁香久久综合频道| 韩国在线视频一区| 最新亚洲一区| 国产精品综合色区在线观看| 国产精品视频久久一区| 亚洲伊人观看| 欧美黄色一区| 在线成人黄色| 国产伦精品一区二区三区视频黑人| 国产乱码精品| 欧美在线视频一区二区三区| 欧美成人tv| 在线播放豆国产99亚洲| 一区二区精品在线观看| 另类天堂av| 亚洲午夜精品一区二区| 正在播放亚洲| 女人香蕉久久**毛片精品| 国产精品国产一区二区 | 欧美日本一区| 亚洲先锋成人| 亚洲欧美日韩精品久久久| 欧美激情国产日韩| 日韩亚洲一区在线播放| 久久久精品动漫| 91久久国产自产拍夜夜嗨| 午夜宅男久久久| 激情综合亚洲| 久久免费一区| 99伊人成综合| 国产精品99免费看| 国产精品亚洲综合| 国模 一区 二区 三区| 午夜一级久久| 亚洲精品一品区二品区三品区| 噜噜噜在线观看免费视频日韩| 欧美日韩日本国产亚洲在线| 一本久道久久久| 欧美三日本三级少妇三99| 国产视频亚洲| 一区二区自拍| 欧美久久成人| 久久99伊人| 国产一级一区二区| 激情欧美日韩| 欧美激情成人在线| 亚洲尤物精选| 夜夜爽99久久国产综合精品女不卡| 亚洲欧美综合国产精品一区| 国产日韩欧美精品| 18成人免费观看视频| 欧美激情性爽国产精品17p| 亚洲专区一区| 一区二区高清| 99国产精品自拍| 亚洲国产精品www| 一区国产精品| 合欧美一区二区三区|