我们希望使用Dialog API进行一些额外的操作,这些操作更适合于更大的工作区域。我们已经能够通过应用程序接口从对话框(Office.context.ui.messageParent
)向父级发送消息,但是我们也希望能够像sendMessage
函数一样直接向对话框发送消息,例如:
var dialog;
Office.context.ui.displayDialogAsync('https://myDomain/myDialog.html', function (asyncResult) {
if (asyncResult.status === "failed") {
showNotification(asynceResult.error.code = ": " + asyncResult.error.message);
} else {
dialog = asyncResult.value;
dialog.addEventHandler(Office.EventType.DialogMessageReceived, processMessage);
dialog.sendMessage({ /* my payload */ }); //???
}
});
有几个选项可以将数据从父级传递到子级:
displayDialogAsync(myUrl + "?myMessage=...", function...)
localStorage.setItem("DIALOG_MESSAGE", myMessage)
但是,这两种方法都只能在对话框的初始化时使用,它们并没有提供一种很好的异步消息传递方式。
发布于 2017-03-16 02:39:25
这是一个流行的请求(也是一个好主意),但它还不受支持。请转到Office Dev User Voice,在那里投票支持“改进自定义对话框”的建议,或者创建您自己的新建议。
发布于 2019-05-22 03:16:41
在使用displayDialog
之前,您可以在parrent中使用它
localStorage.setItem("clientID", "15963ac5-314f-4d9b-b5a1-ccb2f1aea248");
然后在您的JavaScript文件中:
var clientID = localStorage.getItem("clientID");
发布于 2021-05-24 22:25:17
DialogApi 1.2有了一个新特性messageChild
:https://docs.microsoft.com/en-us/office/dev/add-ins/develop/dialog-api-in-office-add-ins#use-messagechild-from-the-host-page
https://stackoverflow.com/questions/42817868
复制相似问题