Office.EventType.DocumentSelectionChanged(在Excel中)不适用于所有Web浏览器

时间:2015-11-05 11:01:46

标签: office-addins office-js

Code sample

我正在尝试在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 :对象

以下是http://aka.ms/R2yi5b

的测试链接

2 个答案:

答案 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"教程。而且一切都正常。你能试试吗?

enter image description here

~Michael Zlatkovsky,Office Extensibility团队的开发人员,MSFT

答案 1 :(得分:1)

感谢您的耐心等待。我很高兴地告诉您,此修复程序已经部署,现在可以在所有Web浏览器上运行。再次感谢您提交反馈意见。

干杯, 天空