我们在 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/