Microsoft Office 加载项:如何检测功能区内置按钮(如加粗按钮)被点击?
检测Excel内置功能区按钮点击的可行方案
目前Office JavaScript API不支持直接监听内置功能区按钮(如加粗)的点击事件,API设计仅开放了自定义功能区控件的交互监听能力,内置按钮的事件并未对第三方加载项开放。
不过可以通过间接监听内容格式变化的方式,近似判断用户是否触发了这类内置操作,以下是具体实现思路:
监听选区变化事件,对比格式前后状态
当用户点击加粗按钮后,选中内容的字体加粗状态会改变,通过监听DocumentSelectionChanged事件,获取当前选区的格式并与之前状态对比,即可判断是否触发了加粗操作。示例代码如下:let previousBoldState = false; Office.initialize = function() { // 注册选区变化监听 Office.context.document.addHandlerAsync( Office.EventType.DocumentSelectionChanged, handleSelectionChange ); }; function handleSelectionChange() { // 获取选中内容的OOXML格式信息 Office.context.document.getSelectedDataAsync( Office.CoercionType.Ooxml, function(result) { if (result.status === Office.AsyncResultStatus.Succeeded) { const ooxml = result.value; // 通过解析OOXML判断当前加粗状态 const isBold = ooxml.includes("<w:b/>") && !ooxml.includes("<w:b w:val=\"0\"/>"); if (isBold !== previousBoldState) { console.log("加粗状态已变更,大概率是触发了内置加粗按钮"); previousBoldState = isBold; } } } ); }绑定特定区域监听格式变化
如果仅关注特定单元格区域的格式变化,可以创建绑定并监听BindingDataChanged事件,同样通过解析格式变化来间接判断操作。
注意事项
这种间接方式存在局限性:无法区分格式变化是来自内置按钮点击、快捷键操作还是右键菜单,仅能作为近似判断方案。
内容的提问来源于stack exchange,提问作者drewvlaz
相关产品推荐
相关产品推荐

