使用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
事件,文件上传对大多数东西都有效,事件照常被触发。但是对于像这样的东西,跳过图像拖动-没有drop
事件触发。如果你是Mac用户,Skitch是一个图像编辑工具,可以让你从编辑器中删除内容。
但是Skitch的拖拽同样适用于Gmail,所以我想我在这里遗漏了一些东西。
发布于 2011-07-28 21:27:46
我不知道发生了什么,但你可能想尝试使用Gmail bookmarklet来查看visual event到底绑定了哪些事件到你正在拖放图片的目标上。
发布于 2011-08-09 01:19:54
由于您只显示了代码的一小部分,我将指出您可能会遇到问题的地方,但您需要更详细地检查它们。除了将CoffeeScript编译成纯javascript之外,我对它并不太熟悉,所以这只是一种猜测。
@setDropArea() unless @dragInProgress
:假设drop
从不触发,放置区域是否设置正确?当@dragInProgress
为真时,unless
似乎会将@setDropArea()
设置为never set。
在dragStarted
和dragEnded
中,添加一些console.log
注释以查看哪些方法正在触发以及何时触发。这可能不是它没有启动,而是它在错误的时间启动。
最后,看看这里:http://strd6.com/2011/01/jquery-drag-image-from-desktop-plugin/这似乎是你想要做的(或者至少是类似的),可能会给你一些提示,告诉你哪里做错了。
祝你好运!如果你从这些事情中得到了一些结果,请发表评论,我会看看是否可以进一步缩小范围。
https://stackoverflow.com/questions/6854855
复制相似问题