使用javascript将自定义json对象复制到剪贴板

时间:2015-08-13 23:09:50

标签: javascript android json html5 canvas

我正在使用HTML5 + javascript开发共享画布。我正在开发复制/粘贴功能,使用Ctrl + C,+ X,+ V可以做到这一点,但我也想添加提供相同功能的典型按钮(主要是为了能够复制) /贴在药片中。)

管理标准事件的代码非常简单:

window.addEventListener("copy", copyFunc);

...

copyFunc(e){
  if (BDKanvasInstance.selection !== null){
    var data = BDKanvasInstance.selection.serialize();
    var jsonData = JSON.stringify(data);
    e.clipboardData.setData('application/json', jsonData);
    e.preventDefault();
  }
}

但我必须从按钮访问clipboardData ...

copyBtn.addEventListener("click", copyBtnFunc);

copyBtnFunc(e){
  /* Any way to access clipboardData or to trigger the standard copy command? */
}

我见过几个涉及创建textarea,插入文本,以编程方式选择并使用“execCommand('copy')”的解决方案,但是这并没有使用“application / json”类型复制文本...

任何解决方案?使用键盘快捷键的计算机是可以的,但在平板电脑上使用时它们不是解决方案......

谢谢!

1 个答案:

答案 0 :(得分:2)

一切都在同一页面上完成,所以我已经完成了:

window.addEventListener("copy", copyFunc);

...

copyFunc(e){
  if (BDKanvasInstance.selection !== null){
    var data = BDKanvasInstance.selection.serialize();
    if (e && e.clipboardData)
    {
      var jsonData = JSON.stringify(data);
      e.clipboardData.setData('application/json', jsonData);
      e.preventDefault();
    } else {
      internalClipboard = data;
    }
  }
}

copyBtn.addEventListener("click", copyBtnFunc);

copyBtnFunc(e){
  copyFunc(null);
}

与三个动作类似(复制/剪切/粘贴)。按钮使用null参数从其处理程序调用函数。有一个"剪贴板"用于按钮,另一个用于快捷方式。很脏,但可能会有诀窍......

谢谢!