首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >HTML/Electron:防止将可拖动数据拖放到应用程序之外

HTML/Electron:防止将可拖动数据拖放到应用程序之外
EN

Stack Overflow用户
提问于 2018-07-10 10:40:00
回答 1查看 268关注 0票数 1

我正在制作一个电子应用程序,其中用户使用html drag and drop api在窗口之间传输数据。例如,用户可以单击并拖动设置dataTransfer的选项卡,以保存包含其自身信息的JSON对象。然后,用户将该选项卡拖放到另一窗口中的选项卡板上,并且信息将被移动。

然而,我遇到了一个问题,用户可以将标签拖到另一个应用程序中,比如Google Chrome的搜索栏或任何其他接受纯文本的输入,它会将JSON粘贴到那里。我想停止应用程序删除信息,除非它在同一个应用程序的选项卡面板上。

代码语言:javascript
复制
    $(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')));
        ...
    });
EN

回答 1

Stack Overflow用户

发布于 2018-07-11 05:35:45

Mozilla docs

拖动自定义数据

您还可以使用为自定义目的而组成的其他类型。除非被拖动的对象是特定于特定站点或应用程序的,否则应始终包含纯文本替代项。在这种情况下,自定义类型可确保数据不会被放到其他地方。“

代码语言:javascript
复制
e.originalEvent.dataTransfer.setData('customtext', JSON.stringify(dummyGetTabAsJSON($(this))));
...
var data = dummyCreateTabFromJSON(JSON.parse(e.originalEvent.dataTransfer.getData('customtext')));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51256523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档