【问题标题】:Send a message from host page to Dialog box从主机页面发送消息到对话框
【发布时间】:2020-06-26 20:36:11
【问题描述】:

我正在尝试使用Dialog API 的 Office 加载项。

根据文档,我们可以使用Office.context.ui.messageParent 将消息从对话框发送到主机页面(例如,任务窗格)。然而,我看不出我们如何从主机页面向对话框发送消息。

有人知道怎么做吗?

【问题讨论】:

标签: ms-office office-js


【解决方案1】:

有两种可能的解决方案:

  1. 当您打开分页对话框时,将数据作为查询参数发送。
  2. 如果在同一个域中,则 localstorage 应该在打开的对话框中可用。 setInterval(function () { var value = localStorage.getItem("dataFromDialog"); }, 500) 您可以在对话框localStorageSetItem("dataFromDialog", "message to parent") 中的 localStorage 中写入相同的值

【讨论】:

  • 你能解释一下“查询参数”吗?对于localstorage,Dialog 怎么会通知主机页面localstorage 中有新内容?
  • 当您通过 displayDialog(url) 打开对话框时,您可以使用localhost?key1=value1&key2=value2 等查询参数构造 url,并且您可以在页面中读取您在对话框中加载的内容。关于 localstorage:我认为您可以定期从父母那里检查 localStorage 是否发生了变化
  • 我没说方便。这只是一个解决方案,我也在使用。如果还有其他问题,那我会很高兴,但我没有找到解决该问题的任何其他解决方案。因此,如果您发现了一些东西,最好在这里分享:)
  • 好吧...看看别人怎么说...奇怪的是没有办法像post.message这样发送消息...
  • @SoftTimur:在几个小时前的评论中,您说“我希望对话框随时向主机页面发送消息”这可以通过 messageParent 完成。但是您最初的问题是关于主机页面向对话框发送消息。目前还没有 API 可以做到这一点。
【解决方案2】:

此功能现在处于预览阶段

https://docs.microsoft.com/en-us/office/dev/add-ins/develop/parent-to-dialog

帖子中的示例:

Office.context.ui.addHandlerAsync(
    Office.EventType.DialogParentMessageReceived,
    onMessageFromParent);

function onMessageFromParent(event) {
    var messageFromParent = JSON.parse(event.message);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    相关资源
    最近更新 更多