20.
@水木易安,用插件助手加载插件,dom没插入,似乎在dom出来之前就先执行了js
白日梦还是要做的
26.
@穴儿,你可否暂时改一个临时密码,让我登录你的账号排查一下问题.
小米MIX2s(白)
28.
@strwei,你是直接粘贴 还是使用了插件助手呢
我测试chromium内核的edge是没问题的
测试了火狐也没问题
小米MIX2s(白)
30.

666,因为插件助手本身就是load事件之后才加载自定义插件的。
31.
@水木易安,点赞,已经更新如何在论坛上传附件为使用该插件。
32.
@000,是的,当我使用@穴儿 提供的账号后发现是这个问题。
小米MIX2s(白)
33.
@老虎会游泳,
但是有一点比较奇怪的是:当初编写粘贴上传但是适合是考虑到粘贴到是图片文件的情况的,而且我还测试了的。
在网上也找到相似问题的讨论
然鹅.现在已经不支持读取非拖拽而来的文件了

小米MIX2s(白)
34.
@水木易安,剪切板内的图片数据本身是可以粘贴的,比如刚截取的图片。只是对文件系统内的文件引用不能读取罢了。我最常用的功能是从其他网站复制图片,或者截图粘贴。
35.
@老虎会游泳,的确不能读取文件内容了。
但是我在发布第一个插件帖子的时候,是支持的。不知道这是一个实验室功能还是被阉割的功能。
而且从当时的代码来看,这个读取文件的 API 设计的比较丑陋,居然是从 items
的第二个元素 items[1]
来读取。
而且如果剪切板上如果有多个文件就更加混乱了。(因为没有继承 FileList
)。
现在看起来比较整洁了,贴图用截图,贴文件用拖拽。
小米MIX2s(白)
36.
@水木易安,你误解了剪贴板API,实际上你的处理方式是不正确的。
当我们使用浏览器的“复制图像”功能时,我们实际上复制了两份内容,一份是网页的HTML,一份是这个图像。

所以粘贴时自然也是两份内容,第一个是text/html
,第二个是image/xxx
。至于要用哪个,则由处理代码自行决定。比如富文本编辑框可能会想要第一个HTML。
所以,不应该假设文件位于第二个元素。实际上只需要循环遍历整个list,找到所有file.kind === 'file'
的条目上传即可。
至于该怎么遍历嘛,for (var i=0; i<clipboardData.items.length; i++)
。它在浏览器内部应该是一个C++风格对象,然后忘记实现JS的List
接口了,所以不能forEach。
37.
@老虎会游泳,突然想起来了,原来是我记错了。
我曾经尝试实现“图片文件的粘贴”,结果失败了。
然后又去实现“网页图片的粘贴”。
然后现在我看到代码的时候一直记成了“曾经实现了图片文件粘贴”,还在质疑API怎么这么丑。


小米MIX2s(白)
38.
@水木易安,
的确不能读取文件内容了
对,我早就知道这一点。从我开始使用你的剪切板插件的时候,我就从来没有成功从文件系统中上传过任何文件。
我上传成功的所有图片,一定是图片数据本身就在剪切板内。
而当你在文件管理器里对图片文件按Ctrl+C的时候,你实际上并没有把图片数据放进剪切板,只是放置了一个对图片文件的引用,这是不能上传的,从我刚开始使用起,就不能上传。这我早就知道。
所以我现在既然在用,而且非常依赖这个功能,说明它肯定是一直按我预期工作的,并且情况从未发生改变。
39.
@老虎会游泳,
// 写这段代码的时候,只有上帝和我知道它是干嘛的 ,现在,只有上帝知道
小米MIX2s(白)