找回密码
 立即注册

QQ登录

只需一步,快速开始

我想吃麻薯
初级会员   /  发表于:2023-6-6 10:34  /   查看:1886  /  回复:5
1金币
使用 setShortcutKey设置网页版spread的工作簿ctrl + s进行保存,但是默认总是会弹出网页的保存(如图),请问能阻止吗,能的话如何阻止,不能的话是不是只能另设置个没有默认事件的快捷键组合

image.png66164855.png

最佳答案

查看完整内容

明白您的意思了,该注册的快捷键是在Spread表格范围内有效的,可以覆盖浏览器的ctrl+s行为。 那可以参考下方代码,从js角度禁止浏览器的快捷键行为:

5 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-6-6 10:34:28
来自 4#
明白您的意思了,该注册的快捷键是在Spread表格范围内有效的,可以覆盖浏览器的ctrl+s行为。
那可以参考下方代码,从js角度禁止浏览器的快捷键行为:
  1. document.addEventListener('keydown', function(e){
  2.         var ev = window.event || e;
  3.         if(ev.ctrlKey && ev.keyCode==83)
  4.             ev.preventDefault();
  5.             window.event.returnValue = false;
  6.     });
复制代码

回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-6-6 14:29:24
2#
本帖最后由 Lynn.Dou 于 2023-6-6 14:37 编辑

您好,
可以自定义命令,然后绑定ctrl+s快捷键,示例代码如下:
  1. var command = {
  2.     canUndo: false,
  3.     execute: function (context, options, isUndo) {
  4.         var Commands = GC.Spread.Sheets.Commands;
  5.         if (isUndo) {
  6.             Commands.undoTransaction(context, options);
  7.             return true;
  8.         } else {
  9.             Commands.startTransaction(context, options);
  10.         
  11.             alert("ctrl+s");
  12.             
  13.             return true;
  14.         }
  15.     }
  16. };

  17. spread.commandManager().register("newCommand", command);
  18. spread.commandManager().setShortcutKey("newCommand", 83, true, false, false, false);
复制代码
其中 83 为键盘按键 s 对应的键码, 经测试不会再触发浏览器的ctrl+s快捷键
image.png193087157.png

注:
您是用的Mac吗?上述代码是针对于windows,对于Mac,请参考API:
https://demo.grapecity.com.cn/sp ... ager#setshortcutkey
image.png948457641.png
回复 使用道具 举报
我想吃麻薯
初级会员   /  发表于:2023-6-6 14:37:05
3#
Lynn.Dou 发表于 2023-6-6 14:29
您好,
可以自定义命令,然后绑定ctrl+s快捷键,示例代码如下:

你好,我就是这样注册的,也能执行我的命令,但是还是会跳出网页保存的弹窗,想问一下怎么阻止这个弹窗的跳出
  1. spread.commandManager().register('saveFile', {
  2.     canUndo: false,
  3.     execute: (_context: GC.Spread.Sheets.Workbook, options: Record<string, any>, _isUndo: boolean) => {
  4.       pageParam.saveFile(_context)
  5.     }
  6.   })
  7.   spread.commandManager().setShortcutKey('saveFile', 83, true, false, false, false)
复制代码
回复 使用道具 举报
我想吃麻薯
初级会员   /  发表于:2023-6-6 15:06:32
5#
Lynn.Dou 发表于 2023-6-6 14:45
明白您的意思了,该注册的快捷键是在Spread表格范围内有效的,可以覆盖浏览器的ctrl+s行为。
那可以参考下 ...

哦哦原来如此,感谢
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-6 17:06:04
6#
我想吃麻薯 发表于 2023-6-6 15:06
哦哦原来如此,感谢

好的,那就先结贴了,后续有问题随时开贴提问哈。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部