【问题标题】:Copy to clipboard BINARY data in browsers在浏览器中复制到剪贴板 BINARY 数据
【发布时间】:2012-11-30 15:55:27
【问题描述】:

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

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

这是咖啡脚本。

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

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

问题

您是否随时解决了将 BINARY 数据复制到剪贴板的问题?以及如何?

谢谢

【问题讨论】:

  • 请注意:剪贴板 JS API 现在 supported 在顶级浏览器中相当不错。但我不知道这对二进制数据复制有帮助。
  • @prototype 不确定要求是什么?
  • 也许您可能会考虑here 中描述的允许将文件从服务器拖放到桌面的技术?据说它只能在 chrome 中工作。
  • 我的目标是放置一个带有数据风格“GVML”的 ZIP blob,最终目标是将图表从浏览器复制/粘贴到 Office 作为可编辑对象。
  • 不让网页复制二进制数据是一个可能的安全问题,因为用户不知道内容吗?

标签: javascript flash coffeescript clipboard


【解决方案1】:

我阅读了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 菜单项:
我希望这会有所帮助;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 2021-11-19
    • 2020-04-20
    相关资源
    最近更新 更多