javascript - 将处理程序附加到 DocumentSelectionChanged 事件会禁用 Office for Mac 上的撤消堆栈

标签 javascript office-js

我们在 Office for Mac 上的 Office.js 中遇到了一个错误。

如果将事件处理程序附加到 DocumentSelectionChanged调用 Excel.run 的事件标准 Excel“撤消”功能被禁用。在加载项卸载(即事件处理程序取消 Hook )之前,此功能将保持禁用状态。

您可以通过(例如)采用 Excel-Add-in-JS-CollegeCreditsTracker 来复制此问题示例应用程序并在 app.initialize 中插入以下代码块方法。

Office.context.document.addHandlerAsync(
        Office.EventType.DocumentSelectionChanged,
        function () {
            Excel.run(function (ctx) {
                var activeCell = ctx.workbook.getSelectedRange();
                activeCell.load(["address", "worksheet", "rowIndex", "columnIndex", "values", "formulas"]);
                return ctx.sync().then(function () {
                    app.showNotification(activeCell.address);
                });
            }).catch(function (err) {
                console.log(err);
            });
        },
        null,
        function (asyncResult) {
            console.log("Handler added: " + JSON.stringify(asyncResult));
        }
    );

请注意,这在 Excel Desktop 和 Excel Online 上运行良好。 是否有特定原因(例如 Office for Mac 支持的 API 版本)导致此操作失败?

这个answer在一个不相关的问题上,建议有一种替代方法来处理较新的 API 版本中的选择更改(尽管它没有说明如何处理)。在这种情况下,这是一个可能的解决方法吗?

我们不能使用 BindingChanged 事件,因为我们想知道用户何时移入和移出绑定(bind)、用户何时切换工作表等。

最佳答案

只是想让大家知道 Office 团队已解决此问题。

关于javascript - 将处理程序附加到 DocumentSelectionChanged 事件会禁用 Office for Mac 上的撤消堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44060020/

相关文章:

javascript - Outlook 桌面应用程序加载项,用于将邮件地址插入到 outlook 新邮件到地址栏

javascript - 获取 header 的 OOXML

javascript - 使用 jquery 更改某些 html 的位置以隐藏某些 html

javascript - Jquery 悬停在标签上持续触发

javascript - 是否可以将渐进式网络应用程序链接到 toast

office-js - 编写时禁用 Outlook 加载项命令按钮

javascript - 不使用第三方 jQuery 库的 jQuery 弹出窗口?

javascript - 如何用代码实现静态网站的搜索框功能?

javascript - 两个任务 Pane 的通信

javascript - 在 Outlook 365 加载项中捕获 "onChange"事件