【问题标题】:Unable to open page using displayDialogAsync无法使用 displayDialogAsync 打开页面
【发布时间】:2018-02-18 02:25:41
【问题描述】:

我正在尝试使用 displayDialogAsync 从我们的网络应用程序打开我们现有的登录页面,但它返回 400 错误。

var loginUrl =  'https://url.com/xxxxx/login.action';
Office.context.ui.displayDialogAsync(loginUrl, {width:20, height:43}, function (asyncResult) {
loginDialog = asyncResult.value;
loginDialog.addEventHandler(Microsoft.Office.WebExtension.EventType.DialogMessageReceived, receiveMessage);

更新:调试时,我在 showDialog 函数中找到了here,它添加了管道。

当我尝试比较 Dropbox 的登录页面时,我注意到管道被转义了。

【问题讨论】:

  • 不清楚你在问什么。您提到了|,但您的示例代码不包含一个?
  • @MarcLaFleur-MSFT 我说的是这个参数添加到 loginUrl 一旦传递到对话框:_host_Info=outlook|web|16.01|en-us|783c4af8-1611-ccc4-6a56-df160b8e6f9a |isDialog
  • 您返回的确切错误是什么?错误中通常会包含一条附加消息,其中包含更多细节。
  • 感谢@MarcLaFleur-MSFT 的回复。在 Chrome 中我得到:页面不工作,HTTP 错误 400。我在打开插件时也遇到此错误 解析“沙盒”属性时出错:“ms-allow-popups”是无效的沙盒标志. ,我从另一个thread 中读到它,只是忽略它。在 IE 中,错误是:找不到网页。最可能的原因:地址中可能有输入错误。.. async.status 已成功,我正在使用 O365 Outlook。
  • @MarcLaFleur-MSFT 我可以在我们的网络应用程序中使用我们现有的登录页面并使用对话框打开它还是我需要创建一个新的登录页面?我目前正在做的是先验。

标签: javascript outlook office-js


【解决方案1】:

您的登录页面的域是否与加载项的 Web 应用程序的域相同?请注意以下几点:

"页面、控制器方法或其他资源传递给 displayDialogAsync 方法必须与主机在同一个域中 页。”

这是来自Use the Dialog API

这意味着您在对话框中打开的第一个页面必须与主机页面的域相同。但是您可以在该页面上配置脚本以立即重定向到另一个域上的登录页面。重定向时,_host_info 参数不会出现在 URL 上。

【讨论】:

  • 我使用 index.html 作为我使用 yeoman office-generator 时创建的主机/登录页面,因此它的域是 localhost。我只想使用登录页面,然后将在插件中创建其余页面。
  • 在您的代码行中:var loginUrl = 'url.com/xxxxx/login.action';,对于 index.html 文件和您所谓的“登录页面”,“url.com”是否相同?如果是,并且 _host_info 参数导致您的登录页面出现问题,那么您可以创建一个没有 UI 的页面,该页面会立即重定向到您的登录页面。然后将无UI页面的URL传递给displayDialogAsync。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-27
相关资源
最近更新 更多