最佳原创 发表于 2023-10-11 22:09:26

【资源分享】复制到剪贴板,支持复制换行符,支持获取复制结果【模板命令】【js】

本帖最后由 最佳原创 于 2023-10-19 12:02 编辑

今天使用使用了复制到剪贴板 这个命令,发现复制多行文本的时候会丢失换行符,导致多行文本实际复制到剪贴板的文本变成了单行
要复制的文本:
1
2
3
复制后的文本:
123
然后论坛搜了一下,发现了一个去年的帖子
复制到剪贴板插件 无法复制回车及换行符,能否处理下
一年多了,作者也没修复这个问题(可能反应的人少吧):(

然后简单看了一下其他人发的类似帖子,总感觉不太完美,那就自己动手撸吧

我这个人呢,离开百度搜索不会编程;P,于是乎决定找ai帮忙(懒得自己搜代码)

(懒得开科技,我觉得嘛,这种小事用文心一言完全能胜任了)
AI给了两个结果,一个老式方法,一个最新的api
把这两个示例丢到浏览器控制台测试了一下
测试最新的发现无法使用(我用的最新的edge浏览器)
然后测试第一个老版本的方式可以用,嘿嘿:victory:

代码很简单 , 简单修改了一下给他加上返回值(用于判断成功与否)

    以下代码可以直接拿去构造自己的复制到剪贴板命令了
function copyToClipboard(text) {
    var dummy = document.createElement("textarea");
    document.body.appendChild(dummy);
    dummy.innerHTML = text;
    dummy.select();
    var success = document.execCommand('copy');
    document.body.removeChild(dummy);
    return success;
}

var str =Forguncy.CommandHelper.getVariableValue("要复制的文本")
if(copyToClipboard(str)) {
      Forguncy.CommandHelper.setVariableValue("复制结果", "复制成功")
} else {
    Forguncy.CommandHelper.setVariableValue("复制结果", "复制失败")
}1-9行: 定义一个名为"copyToClipboard"的函数,功能:把文本复制到剪贴板的
11行: 读取活字格命令变量中的文本
12行: 调用"copyToClipboard"函数把文本复制到剪贴板,并且判断复制结果
13行: 复制成功>把"复制成功"保存到名为"复制结果"的变量中
15行: 复制失败>把"复制失败"保存到名为"复制结果"的变量中


演示文件自取 :


过于简单,各位就当水帖看看好了

gczxxu 发表于 2023-10-13 19:03:56

需要这么复杂吗??

最佳原创 发表于 2023-10-13 20:02:41

gczxxu 发表于 2023-10-13 19:03
需要这么复杂吗??

大佬见笑了:lol

gczxxu 发表于 2023-10-14 21:03:37

最佳原创 发表于 2023-10-13 20:02
大佬见笑了


送你一个脚本:
支持浏览器原生复制,当然你说的多行的问题也就不存在了。
如果嫌麻烦,放到命令模板里用,再不然,就这几行代码,自己按官方样例封装个插件。
var cell = Forguncy.Page.getCell("单据编号");
var cellValue = cell.getValue();
navigator.clipboard.writeText(cellValue);

最佳原创 发表于 2023-10-15 15:03:38

本帖最后由 最佳原创 于 2023-10-15 15:23 编辑

gczxxu 发表于 2023-10-14 21:03
送你一个脚本:
支持浏览器原生复制,当然你说的多行的问题也就不存在了。
如果嫌麻烦,放到命令模板 ...
这个原生api在文章中提到过,由于考虑浏览器兼容,所以没有采用,

当然我测试存在问题,因为这个api直接在浏览器控制台中使用时不被允许的


综合考虑来看,使用老方法似乎更靠谱一点

gczxxu 发表于 2023-10-15 21:10:43

最佳原创 发表于 2023-10-15 15:03
这个原生api在文章中提到过,由于考虑浏览器兼容,所以没有采用,

当然我测试存在问题,因为这个api直接在 ...

哦。。。我一直用在按钮中的。感谢提醒。
页: [1]
查看完整版本: 【资源分享】复制到剪贴板,支持复制换行符,支持获取复制结果【模板命令】【js】