在 Outlook 插件中,如何检查我们是处于撰写模式还是阅读模式?
In an Outlook addin, how to check whether we are in compose mode or read mode?
我正在创建 outlook 加载项并在 React 应用程序中使用 OfficeJS API。在那里我想为撰写模式加载一组特定的功能,为阅读模式加载另一组功能。所以我的问题是,如何查看我当前处于哪种模式?
在 manifest.xml
文件中,您应该有不同的 ExtensionPoint
用于撰写和阅读视图,如下所示...
<ExtensionPoint xsi:type="MessageReadCommandSurface">
</ExtensionPoint>
<ExtensionPoint xsi:type="MessageComposeCommandSurface">
</ExtensionPoint>
每个部分都必须具有 Action
类型为 ExecuteFunction
或 ShowTaskpane
的标签。如果您有 ExecuteFunction
类型,您只需为读取和组合表面指定不同的函数名称,如下所示 ...
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<Action xsi:type="ExecuteFunction">
<FunctionName>FunctionSpecificToReadView</FunctionName>
</Action>
</ExtensionPoint>
<ExtensionPoint xsi:type="MessageComposeCommandSurface">
<Action xsi:type="ExecuteFunction">
<FunctionName>FunctionSpecificToComposeView</FunctionName>
</Action>
</ExtensionPoint>
如果您有 ShowTaskpane
类型,您将使用不同的文件名加载到框架内,或者如果您使用与以下相同的文件,则添加一些参数 ...
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="readTaskPaneUrl" />
</Action>
</ExtensionPoint>
<ExtensionPoint xsi:type="MessageComposeCommandSurface">
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="composeTaskPaneUrl" />
</Action>
</ExtensionPoint>
...
<Resources>
<bt:Urls>
<bt:Url id="readTaskPaneUrl" DefaultValue="https://localhost:44300/read.html"/>
<bt:Url id="composeTaskPaneUrl" DefaultValue="https://localhost:44300/compose.html"/>
</bt:Urls>
</Resources>
在每个 HTML 页面中,您知道调用了加载项的表面。
如果您不想为阅读和撰写模式创建两个单独的登录页面,我通常会检查 APIs 以了解模式。
您可以检查 displayReplyForm API,这是一种阅读模式 API,因此如果未定义,则您处于撰写模式。
if (Office.context.mailbox.item.displayReplyForm != undefined) {
// read mode
} else {
// compose mode
}
我正在创建 outlook 加载项并在 React 应用程序中使用 OfficeJS API。在那里我想为撰写模式加载一组特定的功能,为阅读模式加载另一组功能。所以我的问题是,如何查看我当前处于哪种模式?
在 manifest.xml
文件中,您应该有不同的 ExtensionPoint
用于撰写和阅读视图,如下所示...
<ExtensionPoint xsi:type="MessageReadCommandSurface">
</ExtensionPoint>
<ExtensionPoint xsi:type="MessageComposeCommandSurface">
</ExtensionPoint>
每个部分都必须具有 Action
类型为 ExecuteFunction
或 ShowTaskpane
的标签。如果您有 ExecuteFunction
类型,您只需为读取和组合表面指定不同的函数名称,如下所示 ...
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<Action xsi:type="ExecuteFunction">
<FunctionName>FunctionSpecificToReadView</FunctionName>
</Action>
</ExtensionPoint>
<ExtensionPoint xsi:type="MessageComposeCommandSurface">
<Action xsi:type="ExecuteFunction">
<FunctionName>FunctionSpecificToComposeView</FunctionName>
</Action>
</ExtensionPoint>
如果您有 ShowTaskpane
类型,您将使用不同的文件名加载到框架内,或者如果您使用与以下相同的文件,则添加一些参数 ...
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="readTaskPaneUrl" />
</Action>
</ExtensionPoint>
<ExtensionPoint xsi:type="MessageComposeCommandSurface">
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="composeTaskPaneUrl" />
</Action>
</ExtensionPoint>
...
<Resources>
<bt:Urls>
<bt:Url id="readTaskPaneUrl" DefaultValue="https://localhost:44300/read.html"/>
<bt:Url id="composeTaskPaneUrl" DefaultValue="https://localhost:44300/compose.html"/>
</bt:Urls>
</Resources>
在每个 HTML 页面中,您知道调用了加载项的表面。
如果您不想为阅读和撰写模式创建两个单独的登录页面,我通常会检查 APIs 以了解模式。
您可以检查 displayReplyForm API,这是一种阅读模式 API,因此如果未定义,则您处于撰写模式。
if (Office.context.mailbox.item.displayReplyForm != undefined) {
// read mode
} else {
// compose mode
}