找回密码
 立即注册

QQ登录

只需一步,快速开始

Derrick.Jiao 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-2-5 15:18  /   查看:3261  /  回复:0
本帖最后由 DerrickJiao 于 2021-2-5 15:19 编辑

在实际应用中,出于对网页数据的保护或为了避免外部数据的污染,有的小伙伴有这样的需求:在表单内可以进行复制粘贴,将外部数据的复制粘贴全部禁止,让SpreadJS只能在表单之间复制粘贴。
这篇文章教大家如何通过重写Ctrl C和Ctrl V实现上述的功能。有细心的朋友已经知道了这一功能在原生的SpreadJS的右键菜单的复制粘贴中已经实现。那么我们要做的就是将右键菜单的命令与Ctrl C绑定。SpreadJS提供了copy和paste命令。

重写复制快捷键
  1. //重写复制快捷键
  2.                 var command = {
  3.             canUndo: false,
  4.             execute: function (context, options, isUndo) {
  5.                 var Commands = GC.Spread.Sheets.Commands;
  6.                 if (isUndo) {
  7.                     Commands.undoTransaction(context, options);
  8.                     return true;
  9.                 } else {
  10.                     Commands.startTransaction(context, options);

  11.                     let spread = context;
  12.                     let sheetName = options.sheetName;
  13.                     let command = {};
  14.                     command.cmd = "copy";
  15.                     command.sheetName = sheetName;
  16.                     command.ignoreClipboard = true;

  17.                     command.callback = function () {
  18.                         options.callback(command.copyData.copyText, command.copyData.copyHtml);
  19.                     };

  20.                     spread.commandManager().execute(command);
  21.                
  22.                     Commands.endTransaction(context, options);
  23.                     return true;
  24.                 }
  25.             }
  26.         };
  27.         spread.commandManager().register("myCopy", command);
  28.         spread.commandManager().setShortcutKey("myCopy", GC.Spread.Commands.Key.c, true, false, false, false);
复制代码


重写粘贴快捷键
  1. //重写粘贴
  2.         var commandV = {
  3.             canUndo: false,
  4.             execute: function (context, options, isUndo) {
  5.                 var Commands = GC.Spread.Sheets.Commands;
  6.                 if (isUndo) {
  7.                     Commands.undoTransaction(context, options);
  8.                     return true;
  9.                 } else {
  10.                     Commands.startTransaction(context, options);

  11.                     let spread = context;
  12.                     let sheetName = options.sheetName;
  13.                     let command = {};
  14.                     command.cmd = "paste";
  15.                     command.sheetName = sheetName;
  16.             
  17.                     spread.commandManager().execute(command);
  18.                
  19.                     Commands.endTransaction(context, options);
  20.                     return true;
  21.                 }
  22.             }
  23.         };
  24.         spread.commandManager().register("myPaste", commandV);
  25.         spread.commandManager().setShortcutKey("myPaste", GC.Spread.Commands.Key.v, true, false, false, false);
复制代码


下载附件即可查看完整的的demo


copy.gif

限制复制粘贴.zip

3.12 MB, 下载次数: 61

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部