Office 对话框 API 向子对话框发送消息
Office Dialog API send message to child dialog
我们想使用对话框 API 进行一些更适合较大工作区的额外操作。我们已经可以通过 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(如果在同一个域上):
localStorage.setItem("DIALOG_MESSAGE", myMessage)
然而,这两者都只能真正用于对话框的初始化,它们并没有提供进行异步消息传递的好方法。
这是一个很受欢迎的请求(也是一个好主意),但目前还不受支持。请前往 Office Dev User Voice 并为 "Improve Custom Dialog" 的建议投票,或者创建您自己的新建议。
你可以在父级使用前使用这个displayDialog
:
localStorage.setItem("clientID", "15963ac5-314f-4d9b-b5a1-ccb2f1aea248");
然后在您的 JavaScript 文件中:
var clientID = localStorage.getItem("clientID");
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
我们想使用对话框 API 进行一些更适合较大工作区的额外操作。我们已经可以通过 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(如果在同一个域上):
localStorage.setItem("DIALOG_MESSAGE", myMessage)
然而,这两者都只能真正用于对话框的初始化,它们并没有提供进行异步消息传递的好方法。
这是一个很受欢迎的请求(也是一个好主意),但目前还不受支持。请前往 Office Dev User Voice 并为 "Improve Custom Dialog" 的建议投票,或者创建您自己的新建议。
你可以在父级使用前使用这个displayDialog
:
localStorage.setItem("clientID", "15963ac5-314f-4d9b-b5a1-ccb2f1aea248");
然后在您的 JavaScript 文件中:
var clientID = localStorage.getItem("clientID");
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