2017-07-04 21 views
1

2つのリボンボタンを持つOfficeアドインを作成しています。各ボタンには異なるTaskpaneIdにリンクされており、各ボタンをクリックすると、別のタスクペインを開きます:2つのタスクペインの通信

<bt:Urls> 
    <bt:Url id="Contoso.Taskpane1.Url" DefaultValue="https://localhost:3000/addin/page1" /> 
    <bt:Url id="Contoso.Taskpane2.Url" DefaultValue="https://localhost:3000/addin/page2" /> 
</bt:Urls> 

は今、私はこれらの2本のページの間にいくつかの通信を実現します。たとえば、page1の操作をした後、page2を自動的にリフレッシュ(サーバーからデータをリロードするにはlocalStorage)します。その結果、page2をクリックすると、既に最新の状態になっています。現時点では、体系的に更新されておらず、page2を更新するには、リボンボタンをクリックする必要があります。

https://localhost:3000/はmean-stackで構築されているため、ページにはangularjsが使用され、サーバーがあります。 2つのページの通信の1つの方法は、サーバー経由でです。page1は、socket.ioによってメッセージをサーバーに送信し、サーバーはsocket.ioからpage2までメッセージを送信します。ちょっと退屈です。

Office用のJavaScript APIが、2つのタスクパネル間でこのような通信を許可するための簡単な(かつクロスプラットフォームの)方法を既に持っているかどうかは誰にも分かりますか?

PS: Mac用またはWindows用のExcelで動作するようには思えないので、localStorageStorageEventを使用することは、良いアイデアではありません。

答えて

0

現時点で大きな解決策はありません。 Script Labについては、ローカルストレージとタイマーを使用して、イベントをサポートしていないプラットフォーム/ブラウザ(IE 11)でタイムスタンプを数秒でチェックします。ローカルストレージの問題はタイマーの必要性ではなく、むしろ特定のタスクペインのセットだけを対象にすることはできません。代わりに、他のドキュメントのタスクペインにも影響を与えます。スクリプトラボでは、サーバーベースのコミュニケーションにエネルギーを費やす代わりに、その行動を生きることに決めました(socket.ioなどを意味すると思います)

+0

はい、私は 'socket.io'を使って動作しますこれまでのところ、簡単なクロスプラットフォームのイベント処理/ Officeアドインのメッセージングは​​高く評価されます... – SoftTimur

関連する問題