据我所知,通过javascript挂钩paste
事件来上传文件是not possible。
但我在trello.com上发现了这样的事情
如何重现:
只在Windows上使用谷歌浏览器我无法在linux ff或chrome上重现它
那么他们是如何实现的呢?
答案 0 :(得分:1)
在Trello中,他们使用在粘贴事件中注册的事件处理程序,基本上访问event.clipboardData.items
。
javascript代码(here)缩小了,因此不是特别容易阅读,但它基本上归结为应用其他question
中的技巧粘贴处理程序的摘录:
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)
};