2

代码示例

我正在尝试 DocumentSelectionChanged在 Excel 在线文档中添加事件句柄(在所有浏览器中测试)。从过去 15 天开始,创建此事件失败。

请在这里帮助我

PS:相同的事件在 Excel 2013 桌面环境中运行良好

 Office.context.document.addHandlerAsync(Office.EventType.DocumentSelectionChanged, function(eventArgs) {
     console.log(eventArgs);
 }, function(asyncResult) {
     console.log(asyncResult);
 });

OSF.DDA.AsyncResult {值:未定义,状态:“失败”,错误:OSF.DDA.Error}错误:OSF.DDA.Errorcode:5001message:“发生内部错误。”名称:“内部错误”原型: OSF.DDA.Errorconstructor: (n,t,i) proto : Objectstatus: "failed"value: undefined__proto__: OSF.DDA.AsyncResultconstructor: (n,t) proto : Object

这是在http://aka.ms/R2yi5b进行测试的链接

4

2 回答 2

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 教程应用程序,即“SelectionChanged”教程。那里也一切正常。你能试试吗?

在此处输入图像描述

~ Michael Zlatkovsky,Office 可扩展性团队的开发人员,MSFT

于 2015-11-06T19:43:06.340 回答
1

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

干杯,天空

于 2015-12-02T23:32:48.667 回答