丢弃事件不会持续被触发

时间:2011-07-28 06:26:47

标签: javascript html5 coffeescript

使用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,所以我认为我在这里遗漏了一些东西。

2 个答案:

答案 0 :(得分:0)

我不确定发生了什么,但您可能想尝试使用visual event书签来确切了解Gmail已绑定到您要删除图片的目标的哪些事件。

答案 1 :(得分:0)

由于您只展示了代码的一小部分,我会指出您可能遇到问题的地方,但您需要更详细地检查它们。我对CoffeeScript不太熟悉,只是编译成普通的javascript,所以这几乎是猜测。

@setDropArea() unless @dragInProgress:假设drop从未触发,是否正确设置掉落区域?似乎unless会将@setDropArea()置于@dragInProgress为真时从未设置过。

dragStarteddragEnded中,添加一些console.log注意事项以查看触发的方法和时间。可能不是它没有射击,而是它在错误的时间射击。

最后,请看一下:http://strd6.com/2011/01/jquery-drag-image-from-desktop-plugin/ 这似乎是你想要做的(或者至少是类似的),并且可能会给你一些关于你做错的提示。

祝你好运!如果您从这些内容中得到一些结果,请发表评论,我会看看是否可以缩小范围。