我正在制作一个电子应用程序,其中用户使用html drag and drop api在窗口之间传输数据。例如,用户可以单击并拖动设置dataTransfer的选项卡,以保存包含其自身信息的JSON对象。然后,用户将该选项卡拖放到另一窗口中的选项卡板上,并且信息将被移动。
然而,我遇到了一个问题,用户可以将标签拖到另一个应用程序中,比如Google Chrome的搜索栏或任何其他接受纯文本的输入,它会将JSON粘贴到那里。我想停止应用程序删除信息,除非它在同一个应用程序的选项卡面板上。
$(document).on('dragstart', '.tabpane li', function(e) {
e.originalEvent.dataTransfer.setData('text/plain', JSON.stringify(dummyGetTabAsJSON($(this))));
...
});
// Allow tabs as drop targets
$(document).on('dragover', '.tabpane li', function(e) {
e.preventDefault();
});
$(document).on('drop', '.tabpane li', function(e) {
// TODO: Prevent dropping of tab JSON into other applications or inputs
var data = dummyCreateTabFromJSON(JSON.parse(e.originalEvent.dataTransfer.getData('text/plain')));
...
});
发布于 2018-07-11 05:35:45
“拖动自定义数据
您还可以使用为自定义目的而组成的其他类型。除非被拖动的对象是特定于特定站点或应用程序的,否则应始终包含纯文本替代项。在这种情况下,自定义类型可确保数据不会被放到其他地方。“
e.originalEvent.dataTransfer.setData('customtext', JSON.stringify(dummyGetTabAsJSON($(this))));
...
var data = dummyCreateTabFromJSON(JSON.parse(e.originalEvent.dataTransfer.getData('customtext')));
https://stackoverflow.com/questions/51256523
复制相似问题