我正在使用Office.js API编写PowerPoint内容插件。我需要一种方法 对于该插件的每个实例,以确定包含的索引 幻灯片,或者,如果这是不可能的话,插件的可见性状态(即 当前是否在屏幕上显示包含幻灯片。)
The documentation建议 没有专门用于此目的的API,所以我一直在使用 以下方法:
Document.initialize
回调)后,
使用Document.getSelectedDataAsync
请求当前选定的幻灯片
方法getSelectedDataAsync
正在进行异步通信。)但是,在步骤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"
,即使插件是。{
在当前隐藏的幻灯片上。)
答案 0 :(得分:3)
目前,由于函数“getSelectedDataAsync”是异步的,因此PowerPoint客户端似乎返回活动幻灯片而不是父幻灯片。
有没有办法或多或少地可靠地确定包含幻灯片索引,这种方式适用于PowerPoint的Web和桌面版本?
据我所知,没有API可以返回包含内容应用的幻灯片。如果您希望Office加载项支持此API,则可以从here提交反馈。