据我所知,无法 通过paste
javascript挂钩事件来上传文件。
但是我在trello.com
上找到了这样的东西
如何重现:
仅在 Windows 和 google chrome上我无法在 linux ff 或 chrome 上重现它
- 创建一张新卡
- 点击它->它的表格出现了
- 点击评论文本区域
- PrnScr通过, Ctrl+ -> 开始上传截图V(右上角的绿色进度条)
那么他们是如何实现的呢?
据我所知,无法 通过paste
javascript挂钩事件来上传文件。
但是我在trello.com
上找到了这样的东西
如何重现:
仅在 Windows 和 google chrome上我无法在 linux ff 或 chrome 上重现它
那么他们是如何实现的呢?
在 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)
};