Получить индекс слайдов или состояние видимости надстройки содержимого PowerPoint (Office.js)

Я пишу надстройку для PowerPoint с использованием Office.js API. Мне нужен способ для каждого экземпляра этого надстройки определить индекс содержащего слайда или, если это невозможно, состояние видимости надстройки (т.е. виден ли содержащий слайд в настоящее время на экране).

Документация не предлагает никакого API, специально предназначенного для этой цели, поэтому я использовал следующий метод:

При инициализации надстройки (внутриDocument.initialize callback), запросить текущий выбранный слайд, используяDocument.getSelectedDataAsync метод.Поскольку надстройка не может быть инициализирована до тех пор, пока она не станет видимой, мы можем быть почти уверены, что индекс, полученный на шаге 1, является индексом, содержащим слайд (если пользователь не был достаточно быстр, чтобы изменить слайд во времяgetSelectedDataAsync делал свою асинхронную связь).

Однако предположение, сделанное на шаге 2, оказалось неверным. Это верно для PowerPoint Online, но настольные PowerPoint ведет себя по-разному.

В частности, в режиме слайд-шоу, если слайд рядом с текущим отображаемым слайдом содержит надстройку, и этот надстройка еще не инициализирована, он будет предварительно инициализирован, несмотря на то, что он не виден / активен. И во всех таких предварительно инициализированных надстройках,Document.getSelectedDataAsync возвращает индекс слайда, который отображается в данный момент, но не тот, который содержит надстройку.

Таквопрос в том: есть ли способ более или менее надежно определить индекс слайдов, который работает как в веб-версиях, так и в настольных версиях PowerPoint?

Если нет, вотвторой вопросЕсть ли способ для надстройки, чтобы определить, виден ли содержащий слайд в настоящее время на экране в режиме слайд-шоу?

Я нашел один, который работает в PowerPoint Online (проверкаwindow.innerHeight в режиме слайд-шоу), но он опирается на внутренние детали реализации, которые могут быть изменены в любое время, и, что наиболее важно, он не работает в настольной PowerPoint.

Desktop PowerPoint, кажется, отображает каждое дополнение в отдельном окне (какwindow.parent равняетсяwindow), и мне не удалось найти API или обходной путь, который позволил бы определить, является ли окно видимым в данный момент.API видимости страницы кажется, идеально подходит для этой цели, и он даже реализован в IE11, но он не работает внутри PowerPoint (visibilitychange события не происходят,document.visibilityState всегда равный"visible", даже если надстройка находится на скрытом в данный момент слайде).

Ответы на вопрос(1)

Ваш ответ на вопрос