【发布时间】:2016-03-26 17:57:36
【问题描述】:
我正在尝试创建一个contenteditable,其中包含应该可以拖放的芯片元素。你可以在my github repo 上看看这个性能不佳的东西。
到目前为止,我如何让事情发挥作用的故事是另一个故事,经过 天 的努力,现在我终于能够想出一个似乎在 90% 的情况下都有效的解决方案.
剩下的一个问题是可以选择文本并将其拖放到此文本区域内:
此处的选择类似于“lling <div class="chip">Red Screwdriver</div> an”。为了禁止这样做,我看到了两个选项:
要么完全禁止文本选择(到目前为止我无法成功),要么查看 drop 事件并检查拖动的 HTML 内容。我的问题是我不知道我怎么能得到它。由于我只想允许一次拖放一个元素,我实际上可以将“lling <div class="chip">Red Screwdriver</div> an”与我拖动的元素进行比较:
String draggedHtmlDataAsString = event.getDraggedHtmlDataAsString();
if(this.draggedElement.getHtml().equals(draggedHtmlDataAsString) == false) {
// Don't accept data
} else {
// Accept data
}
但我不知道如何从 drop 事件中获取这些数据。对我来说,纯 GWT/Java 解决方案与 JavaScrit/JSNI 解决方案一样好。
欢迎任何比这更好的建议。
我也试图禁止选择,但是,看看你自己..
【问题讨论】:
标签: javascript gwt contenteditable jsni