html 5の使用ドラッグアンドドロップ

5725 ワード

簡単に考えを説明します:あまり話さないで、まずdom構造コードを貼って、

1

2

dom

``` , , draggable="true" 。

   ,      ,    ,            。
dragsrart:           ,
dragend:            ,
drag:             。
e.dataTransfer.setData('draggedID',e.target.id);        。

//var dragsource=documentを処理する.getElementById('dragsource'); dragsource.ondragstart = function(e){ e.dataTransfer.setData('draggedID',e.target.id); console.log('dragsource'); } dragsource.ondragend = function(e){ console.log('dragend'); }
dragsource.ondrag = function(e){    
    //console.log(e.x);//             
}
   ,     ,    
dragenter:             ,
dragover:               ,
dragleave:               ,
drop:              

//リリース領域var target=documentを作成する.getElementById('target'); target.ondragenter = handleDrag;//ドラッグ要素がリリース領域に入るとtargetがトリガーされる.ondragover = handleDrag;//ドラッグされた要素がリリース領域に移動したときにfunction handleDrag(e){//ブラウザにブラウザのデフォルト動作を実行しないように通知する(ブラウザのデフォルトはドラッグアンドドロップ項目を受け入れることを拒否する)e.preventDefault();target.ondragleave=function(e){console.log('ドラッグ要素を置かずにリリース領域から離れる');}//ドラッグ要素が解放領域に置くとtargetがトリガーされる.ondrop=function(e){var draggedID=e.dataTransfer.getData('draggedID');console.log('draggedID:',draggedID);var newElem=document.getElementById(draggedID).cloneNode(true);///trueはそのサブ要素もクローン化し、falseは自身のconsole.log(newElem);target.innerHTML=';target.innerHTML=';target.et. etet. innerHTML=';target.et. etetetete.inneHTML=''appendChild(newElem);
}
DataTransfer  ,      ,       android sharedperference.
setData(,)         ;
getData()    ;
files       
       ,       ,      !




ドラッグされる要素の左右1


ドラッグされる要素の右左2




dom要素をドラッグして



ファイルをここにドラッグ








//var draggedID;//グローバル変数を使用してドラッグされた要素のidを取得し、

をクローン化します.

//リリース領域の作成
var target=document.getElementById('target');
target.ondragenter = handleDrag;//ドラッグ要素がリリース領域に入ると
targetがトリガーされる.ondragover = handleDrag;//ドラッグされた要素がリリース領域に移動すると
function handleDrag(e){
//データに基づいてドラッグされたアイテムは、dragenterとdragoverでgetDataメソッドが無効であるためChromeフィルタは使用できません!
console.log('handleDrag:',e.dataTransfer.getData('draggedID');
if(e.dataTransfer.getData('draggedID')='zuotyou')ブラウザにブラウザのデフォルト動作を実行しないように通知する(ブラウザのデフォルトはドラッグアンドドロップアイテムを受け入れることを拒否する)
e.preventDefault();
}
}
}
target.ondragleave=function(e){
console.log('ドラッグ要素が置かれずにリリース領域から離れる');
}
//ドラッグ要素がリリース領域に置かれたときに
targetをトリガーする.ondrop=function(e){
var draggedID=e.dataTransfer.getData('draggedID');
console.log('draggedID:',draggedID);
var newElem= document.getElementById(draggedID).cloneNode(true);//trueはそのサブ要素もクローン化され、falseは自身
console.log(newElem)のみをクローン化し、
console.log(newElem);< br>br>>console.;target.innerHTML=';
target.appendChild(newElem);

}

//処理ドラッグ
var dragsource=document.getElementById('dragsource');
dragsource.ondragstart = function(e){
console.log(e);
//draggedID = e.target.id;
e.dataTransfer.setData('draggedID',e.target.id);
console.log('dragsource');
}
dragsource.ondragend = function(e){
console.log(e);
console.log('dragend');
}

dragsource.ondrag = function(e){    
//console.log(e.x);//ドラッグ中に数ミリ秒ごとに実行
}

//DataTransfer像解放領域伝送データ
//eg:グローバル変数を使用せず、以上のように


//ファイルをドラッグ
//リリース領域を作成
var target 1=document.getElementById('target1');
target1.ondragenter = handleDrag;//ドラッグ要素がリリース領域に入ると
target 1がトリガーされる.ondragover = handleDrag;//ドラッグ要素がリリース領域に移動すると
function handleDrag(e){
//ブラウザにブラウザのデフォルト動作を実行しないように通知する(ブラウザはデフォルトでドラッグアンドドロップ項目を受け入れることを拒否する)
e.preventDefault();
}
target 1.ondragleave=function(e){
console.log('ドラッグ要素が置かれずにリリース領域から離れる');
}
//ドラッグ要素がリリース領域に置かれたときに
target 1をトリガーする.ondrop=function(e){
var fileList=e.dataTransfer.files;///fileListは配列
console.log(fileList);
table.innerHTML='< th>Nametypesize< tr>';< br>for(var i=0;ivar row='< td styleeyleeew='< td styleyleeyleeew='+fileList[i].name+''+fileList[i].type+''+fileList[i].size+'';
table.innerHTML +=row;
}
}

  に  のファイルをドラッグ&ドロップしてアップロードすることができますか?

if(fileList || true){
for (var i = 0; i formData.append('filename'+i,fileList[i]);
}
}

 を せ、やってみないと からない!