2017-07-04 9 views
1

Ich mache ein Office-Add-in, das zwei Multifunktionsleisten-Schaltflächen hat. Jede Taste ist mit einem anderen TaskpaneId verbunden und öffnet sich auf jedem Button eine andere TaskPane: JetztKommunikation von zwei Aufgabenbereichen

<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> 

ich eine Kommunikation zwischen diesen beiden Seiten realisieren möchten. Zum Beispiel, nach einigen Manipulationen auf page1, ich möchte page2 automatisch aktualisiert werden (um Daten vom Server neu zu laden oder localStorage). Als Ergebnis, wenn wir auf page2 klicken, ist es bereits auf dem neuesten Stand. Im Moment wird es nicht systematisch aktualisiert, und um page2 zu aktualisieren, müssen wir auf die Multifunktionsleiste klicken.

https://localhost:3000/ ist mit Mean-Stack gebaut, so dass die Seiten angularjs verwenden und einen Server haben. Eine Möglichkeit der Kommunikation von zwei Seiten ist via Server: page1 sendet eine Nachricht von socket.io an den Server, und dann sendet der Server eine Nachricht von socket.io an page2. Es ist ein bisschen langweilig.

Weiß jemand, ob JavaScript API für Office bereits einen einfachen (und plattformübergreifenden) Weg hat, eine solche Kommunikation zwischen 2 Aufgabenbereichen zuzulassen?

PS: mit StorageEvent von localStorage ist keine gute Idee, weil es nicht in Excel für Mac zu funktionieren scheint oder für Windows.

Antwort

0

Es gibt keine großartige Lösung im Moment. Für Script Lab verwenden wir lokalen Speicher und einen Timer, um einen Zeitstempel ein paar Mal pro Sekunde auf Plattformen/Browsern zu überprüfen, die keine Ereignisse unterstützen (IE 11). Das Problem mit dem lokalen Speicher besteht nicht so sehr in der Notwendigkeit von Zeitgebern, sondern darin, dass Sie ihn nicht wirklich auf bestimmte Aufgabenbereiche beschränken können. Stattdessen wirkt sich dies auch auf andere Dokumente aus. Für das Skript-Labor haben wir uns entschieden, mit diesem Verhalten zu leben, anstatt die Energie für eine serverbasierte Kommunikation auszugeben (ich nehme an, du meinst socket.io oder ähnliches?)

+0

ja, ich benutze 'socket.io', es funktioniert so weit ... So ein einfaches plattformübergreifendes Event-Handling/Messaging rund um Office-Add-In wird geschätzt ... – SoftTimur

Verwandte Themen