我正在尝试在Excel在线文档中添加DocumentSelectionChanged
事件句柄(在所有浏览器中测试)。从过去15天开始创建此活动失败。
请在这里帮助我
P.S:Excel 2013桌面环境中的相同事件正常工作
Office.context.document.addHandlerAsync(Office.EventType.DocumentSelectionChanged, function(eventArgs) {
console.log(eventArgs);
}, function(asyncResult) {
console.log(asyncResult);
});
的测试链接OSF.DDA.AsyncResult {value:undefined,status:" failed",error:OSF.DDA.Error}错误:OSF.DDA.Errorcode:5001message:"内部错误有发生。"名称:"内部错误" proto :OSF.DDA.Errorconstructor:(n,t,i) proto :Objectstatus: "失败"值:undefined__proto __:OSF.DDA.AsyncResultconstructor:(n,t) proto :对象
答案 0 :(得分:1)
更新(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 Tutorial App," SelectionChanged"教程。而且一切都正常。你能试试吗?
~Michael Zlatkovsky,Office Extensibility团队的开发人员,MSFT
答案 1 :(得分:1)
感谢您的耐心等待。我很高兴地告诉您,此修复程序已经部署,现在可以在所有Web浏览器上运行。再次感谢您提交反馈意见。
干杯, 天空