gpt4 book ai didi

google-chrome - GWT native 拖放 : no data in DragOverHandler

转载 作者:行者123 更新时间:2023-12-02 00:05:03 25 4
gpt4 key购买 nike

[GWT2.4, Chrome, Firefox]

你好,

我正在 TreeView 中实现树项目的拖放。我的 TreeView 旁边有一个管理类,它实例化项目并应用拖放处理程序。

这是它的样子:

private CustomTreeItem createItem(Data data){
CustomTreeItem item = new CustomTreeItem(data);
if(dndApplicable())
setupDndHandlers(item);
return item:
}

private void setupDndHandlers(item){
// The tree item's widget is a FocusPanel
FocusPanel wrapper = item.getFocusPanel();

wrapper.getElement().setDraggable(Element.DRAGGABLE_TRUE);

// Setup the data and drag image when drag starts
wrapper.addDragStartHandler(new DragStartHandler() {
@Override
public void onDragStart(DragStartEvent event) {
event.getDataTransfer().setDragImage(wrapper.getElement(), 0, 0);
event.setData("item_id", item.getData().getId().toString());
}
});

// Each tree item can also be a drop target, so we add handlers accordingly
wrapper.addDragLeaveHandler(new DragLeaveHandler() {
public void onDragLeave(DragLeaveEvent event) {
wrapper.removeStyleName("dragover");
wrapper.removeStyleName("undroppable");
}
});

// Each tree item can also be a drop target, so we add handlers accordingly
wrapper.addDragOverHandler(new DragOverHandler() {
public void onDragOver(DragOverEvent event) {
if (isDroppable(event.getDataTransfer().getData("item_id"), item))
wrapper.addStyleName("dragover");
else
wrapper.addStyleName("undroppable");
}
});

// Each tree item can also be a drop target, so we add handlers accordingly
wrapper.addDropHandler(new DropHandler() {
public void onDrop(DropEvent event) {
String id = event.getDataTransfer().getData("item_id");
if (isDroppable(id, item)) {
proceedWithDrop(id, item);
}
});

isDroppable 函数检查几件事,首先是数据是否为 ​​null 或空。

在 firefox 下,我可以毫无问题地访问事件数据,但是在 Chrome 中,在 DragOverHandler(或 DragEnterHandler)中,通过 dataTransfer 访问的数据是空的。不过,在 DropHandler 中,数据是正确的。

我是否遗漏了一些我没有看到的明显的东西?

谢谢哦。

最佳答案

这是出于隐私和安全原因的设计:Chrome 在这里比 Firefox 更紧密地实现了 HTML5 规范。

参见 http://www.w3.org/TR/html5/editing.html#drag-data-store-mode

关于google-chrome - GWT native 拖放 : no data in DragOverHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18897021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com