是否可以将具有特定数据风格的二进制数据放入剪贴板?即使是带有黑客攻击的浏览器子集也可以。
在这种情况下,具体目标是复制一个 Office 对象,它是一个包含 XML 和其他嵌入文件的 ZIP 文件,具有数据风格GVML
(Office 剪贴板格式)
我能找到的答案表明 text is text 绝对是可能的。关于二进制的帖子大多是关于图像的,这也是可能的。但我没有看到任何关于其他数据风格的信息。
更新
看来这可能是不可能的。以下代码在 Chrome 51、Firefox 46 和 Safari 9.0 中运行,由 Cmd/Ctrl+C 键盘事件触发。
- Firefox 仅将文本和 html 复制到剪贴板
- Chromium 复制
<b>Hello binary!</b>
但作为数据风格org.chromium.web-custom-data
并在文本中嵌入custom/binary
零填充的十六进制。 - Safari 复制
<b>Hello binary</b>
为数据风格dyn.ah62d4rv4gu81k3p2su10e4psqf3hw
,根本不包括在内custom/binary
。
document.addEventListener('copy', function(e){
e.clipboardData.setData('text/plain', 'Hello, world!');
e.clipboardData.setData('text/html', '<b>Hello, html!</b>');
e.clipboardData.setData('custom/binary', '<b>Hello, binary!</b>');
e.preventDefault();
});
以上代码来自https://www.w3.org/TR/clipboard-apis/的“示例 1”
https://www.lucidchart.com/techblog/2014/12/02/definitive-guide-copying-pasting-javascript/