我正在开发一个加载项,当用户在活动工作表中更改其选择时,该加载项将查询Excel对象模型。
在测试期间,我有时遇到一个问题,即在我将鼠标指针移到加载项任务窗格上之前,承诺无法解析。更具体地说,Excel.run批处理中声明的第一个命令最初甚至没有在客户端评估(当鼠标仍在Excel文档上时),但只要鼠标悬停在任务窗格上就会对其进行评估。
我正在使用Excel 2016测试Windows 10周年纪念日更新并使用Edge(14),但似乎Excel加载项正在利用IE11引擎。在这种情况下,es6-promise库使用DOM MutationObserver API提供promises实现。
他们的图书馆看起来不错。有人在过去填写了一个问题(https://github.com/stefanpenner/es6-promise/issues/109),它与IE11和MutationObservers有关,但看起来它在IE方面得到了解决。 MutationObservers仍然存在问题,但我确定了根本原因的麻烦。
如果您想自己测试一下,可以使用以下代码:
(function () {
"use strict";
// The initialize function must be run each time a new page is loaded.
Office.initialize = function (reason) {
$(document).ready(function () {
Office.context.document.addHandlerAsync(Office.EventType.DocumentSelectionChanged, function () {
var values = [
[Math.floor(Math.random() * 1000), Math.floor(Math.random() * 1000), Math.floor(Math.random() * 1000)],
[Math.floor(Math.random() * 1000), Math.floor(Math.random() * 1000), Math.floor(Math.random() * 1000)],
[Math.floor(Math.random() * 1000), Math.floor(Math.random() * 1000), Math.floor(Math.random() * 1000)]
];
Excel.run(function (ctx) {
var sheet = ctx.workbook.worksheets.getActiveWorksheet();
sheet.getRange("B3:D5").values = values;
return ctx.sync();
})
.catch(errorHandler);
});
});
}
// Helper function for treating errors
function errorHandler(error) {
showNotification("Error", error);
console.log("Error: " + error);
if (error instanceof OfficeExtension.Error) {
console.log("Debug info: " + JSON.stringify(error.debugInfo));
}
}
})();
我经常在Internet Explorer中打开很多选项卡,其中一些可能附加了调试器或开发了开发工具,但我真的不确定是什么触发了这种行为。
根据我的“问题”本身,如果问题得到确认,您是否知道是否有办法使用Edge而不是IE11来执行Office加载项,或者知道es6-promise的其他实现是否可能是除了使用MutationObserver API之外的其他用途吗?
由于