链接和 JS 重定向,导致在 Office JS 加载项中打开一个新窗口

aka*_*mis 1 javascript officedev ms-office oauth-2.0 angularjs

我正在处理一个演出,它是一个 Office (Excel) 2016 加载项,用于与 Web 应用程序进行数据集成。我们使用的是 Office JS API,并且 XML 清单文件指向一个 AngularJS Web 应用程序。一切正常,到目前为止工作正常。

最近,我们决定向 Web 应用程序添加 OAuth2 功能,以便用户可以通过 3rd 方授权服务器进行身份验证。

问题是,一旦我放置了一个链接(<a>标签)或运行 awindow.location.replace()或设置window.location.hrefwhich指向一个主机名而不是清单文件中提到的主机名的 URL,它会在新窗口中打开 URL,而我想要它只是重定向到加载项窗口中的 URL。

有人知道如何解决这个问题吗?

谢谢

小智 6

要在加载项窗口中打开 url,您需要在清单文件的 AppDomains 部分中为该 url 的域添加一个条目。例如,此代码段显示如何在 www.contoso.com 上托管的加载项中显示 www.northwindtraders.com 上的链接。

<?xml version="1.0" encoding="UTF-8"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="TaskPaneApp">
  <Id>c6890c26-5bbb-40ed-a321-37f07909a2f0</Id>
  <Version>1.0</Version>
  <ProviderName>Contoso, Ltd</ProviderName>
  <DefaultLocale>en-US</DefaultLocale>
  <DisplayName DefaultValue="Northwind Traders Excel" />
  <Description DefaultValue="Search Northwind Traders data from Excel"/>
  <AppDomains>
    <AppDomain>https://www.northwindtraders.com</AppDomain>
  </AppDomains>
  <DefaultSettings>
    <SourceLocation DefaultValue="https://www.contoso.com/search_app/Default.aspx" />
  </DefaultSettings>
  <Permissions>ReadWriteDocument</Permissions>
</OfficeApp>
Run Code Online (Sandbox Code Playgroud)