Office web加载项:Office.initialize()函数



我很难理解,没有找到一个与我试图实现的目标完全匹配的例子。它有一个MS Outlook功能区栏图标,单击后会显示对话框。我玩了一个演示,去掉了多余的功能,开始了Hello World——但它是JQuery,我想用它来使用AngularJs,以重用大部分现有的应用程序。

首先,示例清单似乎都有类似的东西

<DesktopFormFactor>
<FunctionFile resid="functionFile" />

这似乎适用于当用户单击功能区栏上的图标时调用的函数。如果我只是使用<script src=>标记来包含这样的函数文件,那么我认为我不需要它是正确的吗?

我的应用程序只有一个视图,所以在演示中,所有*.js文件都有类似的内容

// The Office initialize function must be run each time a new page is loaded
Office.initialize = function (reason) {

在我唯一的观点中,我认为我只需要一次这样的呼叫,这是正确的吗?

抱歉,如果这看起来很基本的东西,但所有的演示&这些文件似乎和我想要的很接近,但并不完全一样。节日快乐!

函数文件的使用

FunctionFile指定外接程序通过执行JavaScript函数而不是显示UI的外接程序命令(功能区按钮)公开的操作的源代码文件。外接程序可以决定在任务窗格中显示一些UI,也可以在后台执行javascript函数。对于无UI的加载项,您必须指定一个FunctionFile。

在您的情况下,可以忽略FunctionFile

使用Office.初始化

Office外接程序包括Office.js库,该库要求您的启动代码在库完全加载之前不要调用任何API。有两种方法可以确保代码加载库。

  1. 使用Office.initialize:当Office.js库完全加载并准备好进行用户交互时,会触发初始化事件。您可以为其分配一个处理程序
  2. 使用Office.onReady:Office.on就绪()是一个异步方法,它在检查Office.js库是否已完全加载时返回Promise对象

示例:

Office.initialize = function () {
// Office is ready
};

Office.onReady(function(info) {
if (info.host === Office.HostType.Outlook) {
// Based on host, decide what to display.
}
if (info.platform === Office.PlatformType.PC) {
// Make minor UI changes, if required.
}
});

在您的情况下,您可以使用initialize/onReady一次。

最新更新