gpt4 book ai didi

javascript - 在浏览器中复制到剪贴板二进制数据

转载 作者:可可西里 更新时间:2023-11-01 02:12:56 26 4
gpt4 key购买 nike

复制到剪贴板功能的最新技术(我的调查)

Flash 替代品

HTML5 替代品

草案中有一个 API 用于标准化剪贴板事件,但目前尚未在任何浏览器中实现 http://dev.w3.org/2006/webapi/clipops/

我的 Rails/Zclip 实现

我正在使用 zclip(基于 zeroclipboard)将文本从 restfule 服务复制到系统剪贴板:

$('.copy-to-clipboard').zclip
path:'/ZeroClipboard.swf'
setHandCursor: true
copy: ->
ajaxReturn = $.ajax
type: 'GET'
async: false
url: '/resources/copy_to_clipboard/' + $(this).attr("class").match(/[0-9]+/)
return ajaxReturn.responseText

这是 CoffeeScript 。

如果服务 (/resources/copy_to_clipboard/) 提供文本,它会被正确复制。但是,如果它提供 DOCX 文件,则它不会直接复制到剪贴板。看一下 Rails Controller :

  def copy_to_clipboard
send_file @resource.resource_content.content.file.file, :type => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
end

问题

你有没有解决复制二进制数据到剪贴板的问题?以及如何?

谢谢

最佳答案

我读了Clipboard API and events并编写以下代码,这对我有用。唯一的问题是使用 NULL (0x0) 值。使用代码的方式是使用所需的二进制值设置 x 数组,并且调用 document.execCommand('copy') 函数,恭喜你的数据在剪贴板中!

var x = [0x1b, 0x68, 101, 108, 108, 0x6f, 0x7, 0x8];
var button = document.getElementById("copy-button");

button.addEventListener("click", function() {
document.execCommand('copy');
}, false);

document.addEventListener('copy', function(e) {
var str = '';
x.forEach(function(d) {
str += String.fromCharCode(d)
})
//You can ignore setting third parameter value
e.clipboardData.setData('text', str, true);
console.info('data copied');
e.preventDefault();
});
<button type="button" id="copy-button">Copy to clipboard</button>

这里是在 Notepad++ 中使用 Show All Characters 菜单项粘贴结果: enter image description here
我希望这会有所帮助;)

关于javascript - 在浏览器中复制到剪贴板二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13848337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com