Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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
Office js Office js从Ribbon/FunctionFile.js打开一个新窗口_Office Js_Office Addins - Fatal编程技术网

Office js Office js从Ribbon/FunctionFile.js打开一个新窗口

Office js Office js从Ribbon/FunctionFile.js打开一个新窗口,office-js,office-addins,Office Js,Office Addins,我无法从丝带上打开窗口。我声明了我的按钮,onclick会触发function-file.js中声明的函数。一切正常。但是,它不会执行window.open。我能理解可能有一些CORS问题。所以我测试了一些东西。首先,我在 <AppDomains><AppDomain>Website-URL</AppDomain></AppDomains> 上面的代码在无法打开窗口的情况下使用displayDialog api,这将打开一个站点,然后提供一个按钮

我无法从丝带上打开窗口。我声明了我的按钮,onclick会触发function-file.js中声明的函数。一切正常。但是,它不会执行window.open。我能理解可能有一些CORS问题。所以我测试了一些东西。首先,我在

<AppDomains><AppDomain>Website-URL</AppDomain></AppDomains>
上面的代码在无法打开窗口的情况下使用displayDialog api,这将打开一个站点,然后提供一个按钮来触发window.open。因为如果我刚刚设置了新的位置,它会给我一个弹出警告。使用VS调试功能尝试这一点是可行的。它没有打开窗口,但它打开了对话框,因此我最终可以从对话框中打开窗口。但是,当Manifest.xml被侧向加载时,它不起作用

从函数文件或至少从displayDialog获得window.open工作的任何建议


编辑: 正如第二个答案所说:这是正确的,第一页必须确实在同一来源。但是,我遇到的是一个子域调用,侧加载的加载项无法执行该调用。在visualstudios调试模式下,他只给了我一个CORS警告并加载了它

原创 顺便说一句,dialog api文档说displayDialog不应该在第一次调用时离开域。但是当我直接打电话的时候似乎没问题

Office.context.ui.displayDialogAsync('https://someOtherDomain/website');
我想您只需要在AppDomains中指定域


谢谢您的帮助。

功能在没有UI的情况下运行。如果需要显示信息或与用户交互,则需要使用。您可以将此操作指向应用程序中的任何页面。通常在这种情况下,我们将创建一个页面,该页面在加载时执行,然后显示结果

功能旨在在没有UI的情况下运行。如果需要显示信息或与用户交互,则需要使用。您可以将此操作指向应用程序中的任何页面。通常在这种情况下,我们将创建一个页面,该页面在加载时执行,然后显示结果

根据,在对话框中打开的第一页必须位于同一域中。文档的同一段还明确提到从函数文件调用

  • URL使用HTTPS协议。这对于在对话框中加载的所有页面都是必需的,而不仅仅是加载的第一个页面
  • 域与主机页的域相同,主机页可以是任务窗格中的页,也可以是外接程序命令的功能文件。这是必需的:传递给displayDialogAsync方法的页面、控制器方法或其他资源必须与主机页面位于同一域中
加载第一个页面(或其他资源)后,用户可以转到使用HTTPS的任何网站(或其他资源)。您还可以设计第一个页面以立即重定向到另一个站点

在加载Office.js并在对话框页面中调用Initialize之前,我尝试从函数加载对话框的结果非常不稳定(这被记录为允许您将消息发送回父级,但未按要求提及)。

根据,您在对话框中打开的第一个页面必须位于同一域中。文档的同一段还明确提到从函数文件调用

  • URL使用HTTPS协议。这对于在对话框中加载的所有页面都是必需的,而不仅仅是加载的第一个页面
  • 域与主机页的域相同,主机页可以是任务窗格中的页,也可以是外接程序命令的功能文件。这是必需的:传递给displayDialogAsync方法的页面、控制器方法或其他资源必须与主机页面位于同一域中
加载第一个页面(或其他资源)后,用户可以转到使用HTTPS的任何网站(或其他资源)。您还可以设计第一个页面以立即重定向到另一个站点


在加载Office.js并在对话框页面中调用Initialize之前,我尝试从函数加载对话框的结果非常不稳定(这被记录为允许您将消息发送回父级,但未按要求提及)。

好的,谢谢。那么dialogApi将来也不能从函数文件中使用吗?我想知道为什么Ribbon功能与以前的外接程序类型相比减少了这么多?@MAOg0espr0它肯定没有减少,就在一年前(可能是几年前),我们没有任何Ribbon连接,所以请享受您现在拥有的功能;)好的,谢谢。那么dialogApi将来也不能从函数文件中使用吗?我想知道为什么Ribbon功能与以前的外接程序类型相比减少了这么多?@MAOg0espr0它肯定没有减少,就在一年前(可能是几年前),我们没有任何Ribbon连接,所以请享受您现在拥有的功能;)您能否添加更多关于您正在体验的平台的详细信息?(win32、mac、ios或联机?)谢谢。请添加有关您正在体验的平台的更多详细信息?(win32、mac、ios或在线?)
Office.context.ui.displayDialogAsync('https://someOtherDomain/website');