2

Ich habe eine Anwendung von mean-stack, die eine Website und ein Excel-Add-in hostet. html5 aktiviert ist, und es hatKonflikt von displayDialogAsync und html5-history-api

<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script> 
<script src="https://cdn.rawgit.com/devote/HTML5-History-API/master/history.js"></script> 

In der Excel-Add-in, habe ich eine Schaltfläche, um eine Seite auf der Website von Dialog API öffnet:

$scope.openDialog = function() { 
    Office.context.ui.displayDialogAsync("https://localhost:3000/preview/tmp/6wr-4PqdBrYQwjp3AAAD", {}, function() {}) 
} 

Wenn ich auf diese Schaltfläche klicken in Excel Online in Chrome öffnet es ein Dialogfeld mit der folgenden URL (beachten Sie, dass und mehrere %2F werden systematisch angehängt), aber es verhindert nicht, die Seite gut anzuzeigen.

https://localhost:3000/preview/tmp/6wr-4PqdBrYQwjp3AAAD?_host_Info=excel|web|16.00|en-us|b6f37f78-e519-7d03-0069-b9c4317a362c|isDialog#%2Fpreview%2Ftmp%2F6wr-4PqdBrYQwjp3AAAD%3F_host_Info=excel%7Cweb%7C16.00%7Cen-us%7Cb6f37f78-e519-7d03-0069-b9c4317a362c%7CisDialog 

Allerdings, wenn ich auf diese Schaltfläche in Excel Online in Firefox klicken, ändert sich die URL schnell auf die folgende URL, die auf der Homepage der Website anzuzeigen stellt sich heraus:

https://localhost:3000/home#%2Fpreview%2Ftmp%2F6wr-4PqdBrYQwjp3AAAD%3F_host_Info=excel%7Cweb%7C16.00%7Cen-gb%7C919fff78-e51f-dc20-0c3c-871b7d0ec25d%7CisDialog 

Also meine Fragen sind:

1) Warum fügt Office.context.ui.displayDialogAsync systematisch # und %2F der URL meiner Website hinzu? Ist es möglich, dies zu verhindern?

2) Ist es möglich, eine URL (unabhängig von # und %2F) zu erstellen, die Firefox akzeptiert?

Bearbeiten 1: Es scheint, dass wenn ich html5-history-api nicht verwende, es funktioniert. So kann nicht html5-history-api für das displayDialogAsync deaktivieren? (Der Grund, warum ich habe html5-history-api nach office.js zu verwenden ist here.)

+0

Können Sie einen Link teilen, über den Personen das von Ihnen beschriebene Verhalten testen können? –

+0

@VivekAthalye Sorry, im Moment habe ich keinen anderen Domain-Namen mit SSL, der eine Mean-Stack-Anwendung hostet ... – SoftTimur

Antwort

4

Es ist nicht displayDialogAsync ist, dass dies zu tun. Es ist ein häufiges Problem bei der angularen Routen- und Winkelpositionierungsstrategie. Suche nach "eckige App fügt Hash zu meinen URLs hinzu" und Sie werden viele Informationen darüber und Lösungen finden.

+0

Ich kann gut öffnen "https: // localhost: 3000/preview/tmp/6wr-4PqdBrYQwjp3AAAD" in einem Browser ist es "displayDialogAsync", die Hash hinzufügt ... – SoftTimur

+0

Ich stimme nicht zu. Dies ist kein Code in Office.js, der der URL Hashwerte hinzufügt. Aber es gibt in Angular, wenn Sie bestimmte Standortstrategien verwenden. Bitte machen Sie die Suche, die ich vorgeschlagen habe. Sie werden feststellen, dass dies nicht bei jeder URL geschieht. Es ist ein komplexes Phänomen. –

+0

Ich habe das OP gestern bearbeitet ... Meine Tests zeigen, dass, wenn ich 'html5-history-api' lösche, kein Hash hinzugefügt wird, so gibt es einen Konflikt zwischen' displayDialogAsync' und 'html5-history-api'. Aber ich muss 'html5-history-api' für die ganze Anwendung verwenden wegen [this] (https://stackoverflow.com/questions/42642863/office-js-nullifies-browser-history-functions-breaking-history- Verwendung/42703406 # 42703406). – SoftTimur