Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何查看Outlook加载项';什么是Javascript API?_Javascript_Outlook_Office365 - Fatal编程技术网

如何查看Outlook加载项';什么是Javascript API?

如何查看Outlook加载项';什么是Javascript API?,javascript,outlook,office365,Javascript,Outlook,Office365,在旧版Office API的文档中,我看到了在用户编写电子邮件时监视to/CC字段更改的功能。这是否在他们针对Office 365的新Javascript API中公开?我似乎找不到确切的答案。恐怕你无法“实时”检测到这一点。邮箱API中只有很少的事件可以挂接。这可能不是您希望的答案,因为我找不到任何关于您所描述的观察者的参考,但下面是我的“不雅观,但它有效”解决方案 在外接程序中,声明一个名为toRecipients的全局(应用程序)变量。接下来,在Office.initalize函数中,添加

在旧版Office API的文档中,我看到了在用户编写电子邮件时监视to/CC字段更改的功能。这是否在他们针对Office 365的新Javascript API中公开?我似乎找不到确切的答案。

恐怕你无法“实时”检测到这一点。邮箱API中只有很少的事件可以挂接。

这可能不是您希望的答案,因为我找不到任何关于您所描述的观察者的参考,但下面是我的“不雅观,但它有效”解决方案

在外接程序中,声明一个名为
toRecipients
的全局(应用程序)变量。接下来,在
Office.initalize
函数中,添加以下代码来初始化
toRecipients
变量,然后启动循环以检查更改

var item = Office.context.mailbox.item;
if (item.itemType === Office.MailboxEnums.ItemType.Message) {
    item.to.getAsync(function(result) {
        toRecipients = result.value;
    }); 
}

setInterval(function(){ isToRecipientsChanged(); }, 1000);
下面是检查更改的代码。我使用
equals
函数检查“收件人”是否已更改

function isToRecipientsChanged() {
    var item = Office.context.mailbox.item;
    item.to.getAsync(function(result) {
        if (!toRecipients.equals(result.value)) {
            toRecipients = result.value;
        }
    });     
}
最后,这里是我使用的
equals
方法。我从另一个那里得到的。请注意,我将检查改为检查电子邮件地址,而不是对象实例

Array.prototype.equals = function (array) {
    // if the other array is a falsy value, return
    if (!array)
        return false;

    // compare lengths - can save a lot of time 
    if (this.length != array.length) {
        return false;
    }

    for (var i = 0, l=this.length; i < l; i++) {
        // Check if we have nested arrays
        if (this[i] instanceof Array && array[i] instanceof Array) {
            // recurse into the nested arrays
            if (!this[i].equals(array[i]))
                return false;       
        }           
        else if (this[i].address != array[i].address) { 
            // Warning - two different object instances will never be equal: {x:20} != {x:20}
            return false;   
        }           
    }       
    return true;
}  
Array.prototype.equals=函数(数组){
//如果另一个数组是falsy值,则返回
if(!数组)
返回false;
//比较长度-可以节省大量时间
if(this.length!=array.length){
返回false;
}
for(var i=0,l=this.length;i

这就是我的“不雅观,但有效”解决方案。但是,如果您向我提供您在问题中引用的旧文档,我将四处询问,以了解新API是否能让您更高效(更优雅)地完成此任务。

因此,我基本上按照您的建议进行了脏检查,现在我正在寻找我在API文档中找到它的地方,在我看到它一周左右之后,我一直找不到它。我认为这是一个尴尬的情况,有太多的标签打开,而阅读文档和想象的事情!无论如何,这似乎是实现这一目标的唯一途径。