我正在使用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”类型复制文本...
任何解决方案?使用键盘快捷键的计算机是可以的,但在平板电脑上使用时它们不是解决方案......
谢谢!
答案 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参数从其处理程序调用函数。有一个"剪贴板"用于按钮,另一个用于快捷方式。很脏,但可能会有诀窍......
谢谢!