2016-05-04 2 views
2

Office.js APIを使用してPowerPointコンテンツのアドインを作成しています。このアドインの各インスタンスについて、 スライドのインデックスを決定する方法、またはこれが不可能な場合は、アドインの表示状態(つまり、含まれているスライドが現在画面に表示されているかどうか)を確認する必要があります。PowerPointコンテンツのスライドインデックスまたは可視状態を取得するaddin(Office.js)

The documentationは、具体的には、この目的のために意図 ないAPIを示唆していないので、私は 次のような方法使用している:(Document.initializeコールバックの内側)、 要求が現在Document.getSelectedDataAsync 方法を使用してスライドを選択したアドインの初期化時に

  1. を。
  2. それが表示されるまで、アドインを初期化することはできませんので、我々は、ユーザーが getSelectedDataAsyncがあったスライドを変更することが十分に速かったしない限り、ステップ1で得られたインデックスは含むスライド (の一つであることはほぼ を確認することができますその非同期通信を行う)。

ただし、手順2で行った前提は間違っています。 PowerPoint Onlineの場合は を保持しますが、デスクトップのPowerPointの動作は異なります。スライド現在の横に表示されている場合

具体的には、スライドショーモードでは、一方 がアドインを含み、そのアドインがまだ初期化されていない、それがアクティブ/表示されていないという事実にもかかわらず を事前に初期化されます。そのような事前に初期化されたすべての アドインでは、Document.getSelectedDataAsyncは現在表示されているスライドのインデックスを返します。これはアドインを含むものではありません。

ので質問はです:多かれ少なかれ確実に含む スライドインデックス、パワーポイントの両方のWebとデスクトップのバージョンでの動作方法を決定する方法はありますか?

いいえ、ここにはの2番目の質問:スライドショーモードで画面に表示されているスライドが現在表示されているかどうかをアドインが判断する方法はありますか?

私はパワーポイントオンライン( スライドショーモードでwindow.innerHeightをチェック)で動作するものを見つけたが、それはすべての時間を変更するには 対象である内部実装の詳細に依存し、そして、最も批判的に、それは動作しません。デスクトップには PowerPointがあります。

デスクトップPowerPointが( window.parentwindowに等しいと)別ウィンドウで各アドインを表示しているようだ、と私は ウィンドウが現在表示されているかどうかを伝えることが可能になるAPIや回避策を見つけることができませんでした。 Page Visibility API アドインが現在 であっても、常に同じ"visible"document.visibilityStatevisibilitychangeイベントは発生しません(それはパワーポイントの内部で動作しません 完全にこの目的に合うように思われ、それがさえIE11に実装されていますが、隠れたスライド)。

答えて

3

現在、PowerPointクライアントは親スライドの代わりにアクティブスライドを返しているようですが、機能「getSelectedDataAsync」は非同期です。

PowerPointのWebバージョンとデスクトップバージョンの両方で動作する方法を含むスライドインデックスを多かれ少なかれ確実に判断する方法はありますか?

私の知る限り、コンテンツアプリを含むスライドを返すAPIはありません。 OfficeアドインでこのAPIをサポートしたい場合は、hereからフィードバックを送信できます。

+0

提案をいただき、ありがとうございました。私は間違いなくUserVoiceにリクエストを送信します。 私は質問に書いたように、デスクトップPPではアドインがそのスライドがアクティブになる前にあらかじめ初期化されているため、 'getSelectedDataAsync'に関しては、親スライドを確実に判断するためには使用できません。 Btw、私は必要なことをする方法を見つけました。私はすぐに答えを発表します。 – skozin

関連する問題