请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

zhouhao

中级会员

69

主题

163

帖子

710

积分

中级会员

积分
710
zhouhao
中级会员   /  发表于:2021-10-19 11:54  /   查看:1676  /  回复:5
本帖最后由 zhouhao 于 2021-11-1 10:05 编辑

GC.Spread.Sheets.Commands.clipboardPaste中既有源区域,又有clipboardText和clipboardHtml,请问实际执行粘贴的时候这个三个数据源的优先级是什么样的呢?

5 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-10-19 15:59:07
沙发
你好,请问你指的实际执行是如何执行呢?调用命令还是使用快捷键或是其他呢?请再详细描述一下具体需求,这边调研一下。
回复 使用道具 举报
zhouhao
中级会员   /  发表于:2021-10-19 16:07:08
板凳
Derrick.Jiao 发表于 2021-10-19 15:59
你好,请问你指的实际执行是如何执行呢?调用命令还是使用快捷键或是其他呢?请再详细描述一下具体需求,这 ...

远端指令回放,调用GC.Spread.Sheets.Commands.clipboardPaste命令会刷新选区导致夺焦点问题,同时多端操作指令有可能出现冲突,所以我希望了解GC.Spread.Sheets.Commands.clipboardPaste指令中这三个数据来源在执行的时候优先顺序是什么?
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-10-19 17:51:13
地板
zhouhao 发表于 2021-10-19 16:07
远端指令回放,调用GC.Spread.Sheets.Commands.clipboardPaste命令会刷新选区导致夺焦点问题,同时多端操 ...

在我们SpreadJS里面粘贴的内容没有优先级的概念。当paste的时候,sjs决定将外部剪贴板里的内容paste下来,还是决定将内部copy区域的内容paste下来。取决于内部copy区域的内容是否和外部剪贴板的内容一致。如果一致,那么走内部paste行为,如果不一致,走外部剪贴板。
回复 使用道具 举报
zhouhao
中级会员   /  发表于:2021-10-20 15:44:35
5#
Derrick.Jiao 发表于 2021-10-19 17:51
在我们SpreadJS里面粘贴的内容没有优先级的概念。当paste的时候,sjs决定将外部剪贴板里的内容paste下来 ...

但是实际执行结果却是当内外不一致时走的内部paste行为,没有源区域时走的外部剪切板,同时内容使用clipboardText,样式使用clipboardHtml
GC.Spread.Sheets.Commands.clipboardPaste.execute(vm.spread, {
    "sheetName": "Sheet2",
    "fromSheet": vm.spread.getSheetFromName("Sheet2"),
    "fromRanges": [new GC.Spread.Sheets.Range(0, 0, 2, 1)],
    "pastedRanges": [new GC.Spread.Sheets.Range(13, 4, 2, 1)],
    "isCutting": false,
    "pasteOption": 0,
"clipboardText": "3\r\n2",
    "clipboardHtml": '<html><body><!--StartFragment--><table style="box-sizing: border-box; border-collapse: collapse; border: 0px; color: rgb(51, 51, 51); font-family: "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><tbody style="box-sizing: border-box;"><tr style="box-sizing: border-box; border: 0px; padding: 0px;"><td style="box-sizing: border-box; border: 0px; padding: 0px; color: rgb(226, 83, 77); font: 14.7px Calibri; vertical-align: bottom;">1</td></tr><tr style="box-sizing: border-box; border: 0px; padding: 0px;"><td style="box-sizing: border-box; border: 0px; padding: 0px; background-color: rgb(249, 151, 76); color: rgb(0, 0, 0); font: 14.7px Calibri; vertical-align: bottom;">25</td></tr></tbody></table><!--EndFragment--></body></html>'
},false)
图片.png735732116.png 图片.png211456298.png


回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-10-20 17:06:10
6#
zhouhao 发表于 2021-10-20 15:44
但是实际执行结果却是当内外不一致时走的内部paste行为,没有源区域时走的外部剪切板,同时内容使用clipb ...

上面描述的场景是在SpreadJS中通过右键进行复制,然后在外面通过快捷键进行复制,此时再回来通过快捷键进行粘贴,这时候内容不一致,走的是外部剪切板。如果这时候内容一致走的是内容剪切板的内容。
而正常的paste命令,当源区域没有数据时,及时clipboardText或者clipboardHtml有数据也不会粘贴。因此,正常的paste命令操作应该源区域,clipboardText和clipboardHtml一致。
image.png399891051.png
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部