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

Attaching an handler to DocumentSelectionChanged event disables the Undo stack on Office for Mac

运行 Mac Office 上的 Office.js 似乎有一个错误。

如果您将事件处理程序附加到调用 Excel.runDocumentSelectionChanged 事件,标准 Excel "undo" 功能将被禁用。并且在卸载加载项(即取消挂接事件处理程序)之前,它一直处于禁用状态。

您可以通过(例如)使用 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 桌面和 Excel 在线上运行良好。 是否有特定原因(例如 Office 支持 Mac 的 API 版本会失败?

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

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

只是想让大家知道这个问题已经被 Office 团队解决了。