右键点击sheet页面弹出菜单由ContextMenu : onOpenMenu()控制,可以改写该方法实现您的需求,具体思路如下:
1. 复制原始右键菜单所有选项,分别记为MenuDataA和MenuDataB,对MenuDataB删除“插入批注”选项。
2. 重写ContextMenu : onOpenMenu()方法,判断右键点击时的单元格位置,据此判断是否在右键菜单中显示“插入批注”选项。
可参考如下代码:
- var oldMenuData = JSON.parse(JSON.stringify(spread.contextMenu.menuData));
- var newMenuData = JSON.parse(JSON.stringify(spread.contextMenu.menuData));
- // 从newMenuData数组中删除“插入批注”选项
- newMenuData.splice(56, 1);
- var oldOpenMenu = spread.contextMenu.onOpenMenu;
- // 重写onOpenMenu方法
- spread.contextMenu.onOpenMenu = function(menuData, itemsDataForShown, hitInfo, spread) {
- if (hitInfo && hitInfo.worksheetHitInfo) {
- var row = hitInfo.worksheetHitInfo.row;
- var col = hitInfo.worksheetHitInfo.col;
- console.log('row: ', row, ', col: ', col);
- // 假设在单元格B2右键菜单中不显示“插入批注”选项
- if (row === 1 && col === 1) {
- menuData = newMenuData;
- } else {
- menuData = oldMenuData;
- }
- oldOpenMenu.call(spread.contextMenu, menuData, itemsDataForShown, hitInfo, spread);
- }
- }
复制代码
上述代码运行效果如下动图所示:
|