2011-07-28 23 views
0

使用HTML5拖放東西。我的代碼如下所示:拖放事件不會一直被解僱

setupDragDrop: -> 
    @currentDoc = tinyMCE.activeEditor.getDoc() 
    @currentBody = $(@currentDoc).find('body') 
    @drag_div = $(JST.drag_message()); 

    tinyMCE.dom.Event.add(@currentDoc, 'dragover', @dragStarted) 
    tinyMCE.dom.Event.add(@currentDoc, 'drop', @dragEnded) 

dragStarted: (event) -> 
    @setDropArea() unless @dragInProgress 
    event.stopPropagation() 
    event.preventDefault() 

dragEnded: (event) -> 
    event.stopPropagation() 
    event.preventDefault() 
    files = event.dataTransfer.files 
    @resetDropStyle() 
    @uploadSelectedFiles(files) 

而且我取消dragover事件和文件上傳適用於大多數的東西和發生的事件會被解僱如常。但是對於類似的情況,Skitch圖像拖動 - 沒有drop事件觸發。如果你是Mac用戶,Skitch是一個圖像編輯工具,可以讓你從編輯器中刪除東西。

但是,與Skitch相同的拖拽工作在Gmail上,所以我認爲我在這裏丟失了一些東西。

回答

0

我不確定發生了什麼,但是您可能想嘗試使用visual event書籤工具來確切地查看Gmail綁定到您要放置圖像的目標的事件。

+0

嘿謝謝。我有檢查出來。 –

0

既然你只顯示了你的代碼的一小部分,我會指出你可能有問題的地方,但你需要更詳細地檢查它們。我不太熟悉CoffeeScript,除了編譯爲純JavaScript外,所以這是非常臆測的。

@setDropArea() unless @dragInProgressdrop永不發射的曙光,是放置區域設置正確嗎?看起來unless會把@setDropArea()設置爲@dragInProgress爲真時從未設置。

dragStarteddragEnded中,添加一些console.log註釋以查看哪些方法正在觸發以及何時觸發。可能不是它沒有開火,而是它在錯誤的時間開火。

最後,看看這裏:http://strd6.com/2011/01/jquery-drag-image-from-desktop-plugin/ 這似乎是你想要做的(或至少類似),並可能會給你一些提示,你做錯了什麼。

祝你好運!如果你從這些事情中得到一些結果,評論,我會看看我是否可以再縮小一些。

+0

嘿謝謝,我今天晚些時候會檢查出來。 –