2012-06-15 54 views
0

我正在使用HTML5拖放系統。將圖像從屏幕左側拖動到右側(這些被標識爲window1window2。圖像存儲在一個數組中,並附加到一個隱藏的輸入元素,以便我可以通過submit將它們發送到下一頁。問題是,我只希望腳本檢測什麼被丟棄在window2,我不想多個條目。阻止HTML5從同一元素的多滴拖放功能

function drop(ev) 
{ 
//append the hidden child 
number.toString(); 
var hidden = document.createElement("input"); 
hidden.type = "hidden"; 
hidden.name = "option"+number; 
hidden.value = my_images; 
var f = document.getElementById("select"); 
f.appendChild(hidden); 
number++; 

var data=ev.dataTransfer.getData("Text"); 
ev.target.appendChild(document.getElementById(data)); 
ev.preventDefault();  
} 

我正在考慮一個簡單的if statement,但我應該怎麼找?我如何檢查我在哪裏目前正在刪除圖像?

編輯:它會是一個想法使用onmouseover事件以某種方式c嘿,我現在懸停在什麼元素?如果是的話,我將如何實現這一點?目前我寫了這段代碼片段

var current = document.mouseover; 
current = document.getElementById(this); 
+0

你可以調用'如果ev.target.children.length> 0' =>表示已經有孩子了嗎? –

+0

@TrinhHoangNhu我試着運行上面的代碼,它會立即觸發當我放下圖像 –

+0

當它已經有一個孩子,你可能會返回false來禁用該過程? –

回答

0

HTML5規範沒有考慮拖動多個項目。因此(您似乎已經注意到了上述情況),各種HTML5事件並不表示多個項目已被拖動。

你沒有在你的問題中明確地說出這個,但我的猜測是你認爲(或者認爲,這是一個老問題)由於瀏覽器自動生成的「鬼影」圖像拖動了多個項目。這些圖像肯定會給人以多元素被拖拽的印象。

這些「鬼影」圖像以及瀏覽器生成它們的方式存在許多已知問題。具體來說,在拖動開始時會生成幻影圖像,這意味着您的代碼無法定義適當的拖動,甚至還沒有運行。即瀏覽器不知道你是在拖動一個巨大的元素,一個小元素,或者你在拖動之前意外地選擇了很多文本......它會生成任何它所看到的圖像,這就是你所得到的。

在一些瀏覽器(不是IE)中,您可以用更合適的東西替換拖動圖像。如果你不關心IE,這通常會奏效,但如果你關心IE,那麼你剛剛發現了人們爲什麼會被HTML5 API困擾。