【问题标题】:How to pass model to Office 365 Dialog from Word 2016?如何将模型从 Word 2016 传递到 Office 365 对话框?
【发布时间】:2017-03-03 06:56:58
【问题描述】:

我在玩 MS Word 的 Office 365 插件。我有一个对话框来操作选定的单词图像。我需要将该图像(可能是该图像的 Base64 值)传递给我的对话框,以便在替换回单词(相同位置)之前可以使用该图像。

我正在使用下面的代码来显示弹出窗口:

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;
    }
});

我想做的事?

当用户在 word 文档中选择要播放的图像并单击功能区按钮打开此对话框时,我需要将该图像传递给对话框以在对话框中显示。

如何将我的图像模型传递给对话框?

【问题讨论】:

    标签: angularjs office365 office-js


    【解决方案1】:

    至少有两种方法可以将内容传递给对话框:

    • 将其作为查询参数传递给您传递给 displayDialogAsync() 的 URL
    • 将其存储在宿主脚本的 window.localStorage 中,然后在对话框页面的脚本中从那里检索它。

    更新:您可以投票赞成这个 Office Dev User Voice 请求,以便在对话框与其主机之间更好地沟通:https://officespdev.uservoice.com/forums/224641-feature-requests-and-feedback/suggestions/17196659-improve-custom-dialog

    【讨论】:

    • 对此,我要补充一点,localStorage 不是超级安全的,以防您同时打开多个文档(不同的 Word 窗口或不同的 Word Online 选项卡)。所以 URL 参数可能是最好的,除了它有长度限制。您可以采用混合方法,使用您在 URL 上传递的随机密钥存储在 localStorage 中(或将该密钥设为时间戳?)然后在某个时候丢弃旧值?...
    • 但是,我认为子对话框可以向父母发送消息,我认为父母也可以向孩子发送消息,形成双向通信。让我检查一下,然后回复你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    相关资源
    最近更新 更多