获取PowerPoint内容插件(Office.js)的幻灯片索引或可见性状态

时间:2016-05-04 00:53:57

标签: powerpoint office365 office-js

我正在使用Office.js API编写PowerPoint内容插件。我需要一种方法 对于该插件的每个实例,以确定包含的索引 幻灯片,或者,如果这是不可能的话,插件的可见性状态(即 当前是否在屏幕上显示包含幻灯片。)

The documentation建议 没有专门用于此目的的API,所以我一直在使用 以下方法:

  1. 在addin初始化(内部Document.initialize回调)后, 使用Document.getSelectedDataAsync请求当前选定的幻灯片 方法
  2. 由于addin在可见之前无法初始化,因此我们几乎可以 确保在步骤1中获得的索引是包含幻灯片的索引之一 (除非用户足够快以更改幻灯片 getSelectedDataAsync正在进行异步通信。)
  3. 但是,在步骤2中做出的假设被证明是错误的。它拥有 对于PowerPoint Online,但桌面PowerPoint的行为方式不同。

    具体来说,在幻灯片放映模式下,如果当前显示的幻灯片旁边有幻灯片 包含一个插件,该插件尚未初始化,它已预先初始化 尽管它不可​​见/活跃。在所有这样的预先初始化 addins,Document.getSelectedDataAsync返回当前幻灯片的索引 显示,这不是包含插件的那个。

    所以问题是:是否有办法或多或少地可靠地确定包含内容 幻灯片索引,适用于PowerPoint的Web和桌面版本的方式吗?

    如果不是,这是第二个问题:是否有一种方法可以让插件在幻灯片放映模式下确定屏幕上当前是否显示包含的幻灯片?

    我找到了一个可以在PowerPoint Online中使用的功能(查看window.innerHeight 幻灯片放映模式),但它依赖于内部实现细节 可能随时更改,而且最重要的是,它在桌面设备中不起作用 PowerPoint中。

    桌面PowerPoint似乎在一个单独的窗口中显示每个插件(如 window.parent等于window),但我找不到API或解决方法 将允许判断窗口当前是否可见。 Page Visibility API 似乎完全符合这个目的,它甚至在IE11中实现,但是 它在PowerPoint中不起作用(visibilitychange事件不会触发, document.visibilityState总是等于"visible",即使插件是。{ 在当前隐藏的幻灯片上。)

1 个答案:

答案 0 :(得分:3)

目前,由于函数“getSelectedDataAsync”是异步的,因此PowerPoint客户端似乎返回活动幻灯片而不是父幻灯片。

  

有没有办法或多或少地可靠地确定包含幻灯片索引,这种方式适用于PowerPoint的Web和桌面版本?

据我所知,没有API可以返回包含内容应用的幻灯片。如果您希望Office加载项支持此API,则可以从here提交反馈。