【问题标题】:Drag'n drop tree items as files to a folder?将树项目作为文件拖放到文件夹中?
【发布时间】:2016-05-02 22:31:07
【问题描述】:

有没有办法开始将 XUL 树中的项目拖到文件夹中,然后在拖放时创建一个包含这些项目数据的文件?

我已经按照MDN 示例成功实现了从文件夹拖放文件到 XUL 树,现在我需要一个反向过程。

谢谢

【问题讨论】:

    标签: javascript firefox-addon xul xulrunner thunderbird-addon


    【解决方案1】:

    我找到了一个解决方案,但它有一点副作用 - 当用户释放鼠标按钮时,我找不到获取通知的方法,因此必须在初始化期间创建一个包含树数据的文件临时目录中的 dragstart 事件,当用户释放鼠标按钮时,该事件将被移动到拖放到文件夹中。 示例:

    //event listener must be added to <treechildren> element
    document.getElementById("myTreeChildren").addEventListener("dragstart", treeDragStart, true);
    function    treeDragStart(e)
    {
    var nsIFile = FileUtils.getFile("TmpD", ["myfilename.txt"], true),
            fos = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream),
            content = "this is an example text";
    // flags: PR_WRONLY | PR_CREATE_FILE | PR_TRUNCATE
    fos.init(nsIFile, 0x04 | 0x08 | 0x20, 0600, 0);
    written = fos.write(content, content.length);
    if (fos instanceof Ci.nsISafeOutputStream)
        fos.finish();
    else
        fos.close();
    
    e.dataTransfer.effectAllowed = "move";
    e.dataTransfer.mozSetDataAt("application/x-moz-file", nsIFile, 0);
    }//treeDragStart()
    

    有人知道是否有办法在应用程序外部发生丢弃时获得通知?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-10
      • 2022-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-26
      • 2011-04-05
      • 1970-01-01
      相关资源
      最近更新 更多