更新(2015 年 11 月 6 日下午):
经过进一步调查,似乎Excel Online 中存在导致此问题的已知错误。回归被注意到并且在几周前已经修复,但是修复还没有到达所有端点(这解释了为什么有些人看到它,而其他人,包括我自己,却没有看到)。我们正在寻找可以加快补丁推出的方法。
随着修复程序通过系统,我们将保持更新此线程。
原始答案(2015 年 11 月 6 日上午):
我只是尝试了一下,并没有看到失败。
不过,我注意到的一件事是共享链接上的代码有一个错误。addHandlerAsync 的语法是它首先接受事件类型,然后是一个处理程序,然后是一个回调函数来报告事件处理是否成功。在共享项目的情况下,看起来它被假定为第二个参数是成功处理程序,第二个是失败处理程序(?)。相反,对于最后一个参数,您应该检查asyncStatus.status
以检查成功状态。
(function() {
'use strict';
// The initialize function must be run each time a new page is loaded
Office.initialize = function(reason) {
$(document).ready(function() {
app.initialize();
addDocumentHandler();
});
};
function addDocumentHandler() {
Office.context.document.addHandlerAsync(
Office.EventType.DocumentSelectionChanged,
eventHandler,
function(asyncResult) {
if (asyncResult.status == "succeeded") {
app.showNotification("Success", "Error handler was added");
} else {
app.showNotification("Error setting event: ", JSON.stringify(asyncResult));
}
}
);
function eventHandler(eventArgs) {
Office.context.document.getSelectedDataAsync(Office.CoercionType.Text, function(asyncResult) {
if (asyncResult.status == "succeeded") {
app.showNotification("Value of selection: ", asyncResult.value);
} else {
app.showNotification("Error", "Cannot read selection value");
}
});
}
}
})();
我也尝试使用Office API 教程应用程序,即“SelectionChanged”教程。那里也一切正常。你能试试吗?
~ Michael Zlatkovsky,Office 可扩展性团队的开发人员,MSFT