关于剪切板

因为最近在做图文混排的复制,但又鉴于网上资料不多,也说得不是很明确,所以我想总结一下我所知道的和自己考虑的做法。

windows平台,剪切板支持好几种格式,这个我还没有深入研究其他格式,暂时只对CF_TEXT,和CF_BITMAP等有点理解。

当时有点好奇qq的图文混排是怎么做到的,但是并没有太多资料给到提示,可能大家的做法都是自定义一种格式。因为我找不

到一些代码去提点我自定义格式,到底是怎么一回事,所以我目前的想法只是当选中内容中有图片时,会用<img></img>

这样的标签把图片的路径放进去CF_DSPTEXT。但我觉得这种做法不好,因为万一文字本身就包含了这种格式呢?

有没有可能利用剪切板支持多种格式同时设置的特性做一些手脚呢?

有个问题,为什么word的图文混排不能直接粘贴到qq?应该就是word用了自定义格式吧?(或者有其他实现方法?)

word是可以直接以图片的模式复制到画图工具的。如果一开始的假设是对的(word用了自定义格式),那么作为自家产品的

画图工具,知道了自定义格式的定义方法,然后解释出来,再生成一张图文结合的图在画图工具上显示。

虽然我不知道这个想法对不对,但至少猜测还算合理,哈哈。但同时我也不用多想了,证明qq也没法获得word的复制方法,

不然应该就能粘贴进输入框了。(吐槽君A:别傻啦,人家只是不屑于粘贴word的图文。吐槽君B:你的版本太低了吧,赶紧更新你的qq)

对于浏览器貌似就可以研究一下了,因为qq可以粘贴来自浏览器的图文。

(不确定是否所有浏览器都可以,貌似测试了chrome是可以的,还有ff单复制图片,获得的是图片url)

毕竟在windows下的浏览器也会用到windows的剪切板吧,所以SetClipboardData这个api也是会用到的。

(吐槽君:chrome好像是有源码的吧,你怎么不下个来看看有没有这方面的实现,瞎扯个什么,你不专业,你滚)

事实证明当粘贴来自chrome和ff的数据时,GetClipboardData(CF_TEXT)确实是能获得数据的。

but.....这些数据貌似没有任何图片相关的东西啊。(看来我想的还是太简单了,另外我无意中发现一点貌似chrome拖拽的是否会发现一个<img>的标签)

然后我很没出息的看了一堆关于浏览器间兼容剪切板的文章,发现原来关注这个方面的人还不少啊。分享几篇确实是好的文章

(爆料君:其实你就觉得人家写得很专业的样子,但是自己也没有亲自试验过,就贴出来,能不能负责任点?我:反正我的随笔就我自己看,你吹得我涨咩。。。。)

but依然没有找到什么对我十分有用线索,下一步,我打算把所有格式都测试一遍,看有没有可能浏览器的粘贴格式用到什么特殊的格式

(吐槽君:你丫,叫你下代码你不下,你还要自己猜啊,你不专业你滚)

顺便附上一下我认为写得不错的一些文章:

1.来自知乎的ctrl + V的讨论 : http://www.zhihu.com/question/20893119

2.来自多浏览器的复制粘贴的研究:https://ruby-china.org/topics/17266

3.据说以前的浏览器复制粘贴时依赖于flash的,这个就有说到jQuery ZeroClipboard的这个api:http://www.cnblogs.com/peunzhang/p/3324727.html

4.貌似现在可以用这样的方法:http://blog.csdn.net/lee_magnum/article/details/17761441

然后这些都不关我事啊。。。。我要研究windows方面的啊。。。。

哎,暂时对如何获取浏览器复制的图文还需要继续研究,有没有人指点一下呢?如果有进展再更新一下

原文地址:https://www.cnblogs.com/riversHahaha/p/4718167.html