5

I was playing with Office 365 add-in for MS word. I have a dialog to manipulate selected word image. I need to pass that image (maybe a Base64 value of that) to my dialog so that I can play with the image before replacing back to the word(same location).

I am using below code to show the popup:

Office.context.ui.displayDialogAsync("https://" + location.host + "/Views/ImageManager.html", { width: 64, height: 55, requireHTTPS: true }, function (asyncResult) {
    dialog = asyncResult.value;
    dialog.addEventHandler(Office.EventType.DialogMessageReceived, processMessage);
    if (asyncResult.status !== Office.AsyncResultStatus.Succeeded) {
        return;
    }
});

Thing I wanted to do?

When the user selects an image to play with that in a word document and click ribbon button to open this dialog, I need to pass that image to the dialog to show in the dialog.

How can I pass my Image model to the dialog?

Khawaja Asim
  • 1,327
  • 18
  • 38

1 Answers1

1

There are at least two ways to pass things to the dialog:

  • Pass it as a query parameter on the URL that you pass to displayDialogAsync()
  • Store it in window.localStorage in the host script and retrieve it from there in script on the dialog page.

UPDATE: You can vote up this Office Dev User Voice request for better communication between the dialog and its host: https://officespdev.uservoice.com/forums/224641-feature-requests-and-feedback/suggestions/17196659-improve-custom-dialog

Rick Kirkham
  • 9,038
  • 1
  • 14
  • 32
  • To that, I would add that localStorage is not super-safe, in case you have multiple documents open at the same (different Word windows, or different Word Online tabs). So URL parameter is probably best, except it has a length limitation. You can do a hybrid approach, storing in localStorage using a random key that you pass on the URL (or make that key a timestamp?) And then at some point throw away old values?... – Michael Zlatkovsky - Microsoft Mar 03 '17 at 19:36
  • However, I thought that much as the child dialog can message the parent, I thought the parent could message the child as well, to form a two-way communication. Let me check on that, and get back to you. – Michael Zlatkovsky - Microsoft Mar 03 '17 at 19:37