找回密码
 立即注册

QQ登录

只需一步,快速开始

jerryniepan

初级会员

32

主题

132

帖子

336

积分

初级会员

积分
336
jerryniepan
初级会员   /  发表于:2017-7-20 16:31  /   查看:9293  /  回复:15
本帖最后由 jerryniepan 于 2017-7-20 17:38 编辑

http://blog.gcpowertools.com.cn/post/ContextMenu.aspx
这个例子中的点击右键层中的复制,复制的内容只能在sheet上粘贴使用,如何实现复制到其他地方像ctrl+c的效果一样呢?
http://sphelp.grapecity.com/webh ... html#clipboard.html 这个好像不好使了

15 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-20 17:50:17
沙发

这个暂时做不到,由于浏览器权限问题,除了按下ctrl+c或者v的时候,js代码是不能访问系统剪切板。所以右键只能spread中复制粘贴
回复 使用道具 举报
jerryniepan
初级会员   /  发表于:2017-7-20 17:55:04
板凳
dexteryao 发表于 2017-7-20 17:50
这个暂时做不到,由于浏览器权限问题,除了按下ctrl+c或者v的时候,js代码是不能访问系统剪切板。所以右 ...

有办法可以触发ctrl+c事件吗?
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2017-7-20 18:25:05
地板
没有用的,哪怕触发了 ctrl+c 事件,DOM上确实能收到事件,但是浏览器也不会把内容放剪切板。
回复 使用道具 举报
jerryniepan
初级会员   /  发表于:2017-7-20 18:37:56
5#
本帖最后由 jerryniepan 于 2017-7-20 18:45 编辑
CCKan 发表于 2017-7-20 18:25
没有用的,哪怕触发了 ctrl+c 事件,DOM上确实能收到事件,但是浏览器也不会把内容放剪切板。

那为啥ctrl+c就可以生效了?点击ctrl+c就可以粘贴到任意地方去。另外,请问怎么拿到执行execute({cmd: 'copy'})后的结果?
回复 使用道具 举报
jerryniepan
初级会员   /  发表于:2017-7-20 19:03:01
6#
CCKan 发表于 2017-7-20 18:25
没有用的,哪怕触发了 ctrl+c 事件,DOM上确实能收到事件,但是浏览器也不会把内容放剪切板。

写到剪切板的办法很多啊,比如这些:
    1. 独立的js库Zero Clipboard
    2. jQuery ZeroClipboard实现复制到剪贴板功能
    3. clipboard.js实现复制到剪贴板(含移动端ios复制)
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2017-7-21 10:22:03
7#
ZeroClipboard 依赖 Flash,浏览器有限制
clipboard.js 只能拷贝到剪切板,不能 paste.

SpreadJS 作为一个通用组件,默认不会做这种限制重重的功能。

你可以自己实现逻辑,在点击菜单时,自己根据 sheet 的选择和 TSV 规范拼一段 string 放到剪切板
回复 使用道具 举报
jerryniepan
初级会员   /  发表于:2017-7-21 11:17:01
8#
本帖最后由 jerryniepan 于 2017-7-21 11:22 编辑
CCKan 发表于 2017-7-21 10:22
ZeroClipboard 依赖 Flash,浏览器有限制
clipboard.js 只能拷贝到剪切板,不能 paste.

复制到剪切板就可以啊,哪限制了,ctrl+c就可以复制到剪切板了,为啥要限制命令复制到剪切板呢?这个bug太明显了吧,都是一套逻辑。明显ctrl+c的复制到剪切版执行的也是K[ta]的excute(b.callback(d),把d传出来就可以拿到复制资源),但是命令执行的时候不知道为啥被禁掉了,完全没必要啊
回复 使用道具 举报
jerryniepan
初级会员   /  发表于:2017-7-21 16:14:56
9#
CCKan 发表于 2017-7-21 10:22
ZeroClipboard 依赖 Flash,浏览器有限制
clipboard.js 只能拷贝到剪切板,不能 paste.

版主我理解的有误嘛?
spreadjs复制到剪切板不是使用特殊的方法吗?只是因为用了Ctrl+c自动写入剪切板的,而不是被禁掉的?
如果是这样的话我拿到copyData的值使用clipboard.js应该可以达到目的吧?
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2017-7-21 17:13:36
10#
是这样的, SpreadJS 作为一个完善的通用组件,不会提供只能 copy,不能 paste 的功能。
但是我们后面尽量会提供能力,让用户自己实现起来更方便。

通过 spread.commandManager().execute({cmd:"copy", sheetName: "Sheet1"}); 来执行 copy 操作。
再通过 ClipboardChanging 事件来获取 copyData,然后你可以通过 clipboard.js 来实现:

            sheet.bind(GC.Spread.Sheets.Events.ClipboardChanging, function (ojb, args) {
                var text = args.copyData.text;

            });
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部