0

据我所知,无法 通过pastejavascript挂钩事件来上传文件。
但是我在trello.com
上找到了这样的东西 如何重现:

仅在 Windows 和 google chrome上我无法在 linux ff 或 chrome 上重现它

  1. 创建一张新卡
  2. 点击它->它的表格出现了
  3. 点击评论文本区域
  4. PrnScr通过, Ctrl+ -> 开始上传截图V(右上角的绿色进度条)

那么他们是如何实现的呢?

4

1 回答 1

1

在 Trello 中,他们使用在 paste 事件上注册的事件处理程序并基本上访问event.clipboardData.items.

javascript代码(此处)被缩小,因此不是特别容易阅读,但它基本上归结为应用在其他问题中找到的技巧

粘贴处理程序的提取:

        c.prototype.paste = function (b) {
            var c, f, e, g, h, k, m, l;
            e = null;
            h = this.handlers;
            for (g in h)
                if (c = h[g], null != c.paste) {
                    e = c.paste;
                    break
                }
            if (null != e && (f = null != (k = null != (m = b.originalEvent) ? null != (l = m.clipboardData) ? l.items : void 0 : void 0) ? k : [], b = function (b) {
                return _.detect(f, function (c) {
                    return c.type === b
                })
            }, !b("text/plain") && (b = b("image/png"), null != b && (b = b.getAsFile(), null != b)))) return j.validFileSize(b) ? (n("Keyboard Shortcuts", "Paste - Upload Image From Clipboard"), e(b)) : P.show("File size exceeds 10mb limit",
                "error", "upload", 5E3)
        };    
于 2013-06-18T08:07:04.780 回答