Office.js对话框API和具有高DPI的多个显示

时间:2017-01-30 16:16:36

标签: office-js office-addins outlook-web-addins

我注意到Office.js dialogAPI存在问题。

实际上,我使用两个显示器,一个是高DPI(3840 * 2160),250%变焦。第二个是1920 * 1080(缩放100%)。

如果在监视器1中设置了Office,并且如果我打开dialogAPI(假设有80%的默认值),则使用两个监视器的扩展名计算对话框的大小。因此,对话框窗口变得巨大,跨越两个显示器,如果没有调整大小,则无法使用。

2 个答案:

答案 0 :(得分:1)

谢谢Benoit。是的,这是我们所知道的问题,目前正在跟进。

答案 1 :(得分:1)

您可以尝试在OfficeHelpers.js中使用Dialog助手吗?它包含在v0.5.0中(https://unpkg.com/@microsoft/office-js-helpers@0.5.0/dist/office.helpers.js)。

对话框助手允许以像素为单位指定宽度和高度,而不是百分比,我们在内部计算百分比并进行DialogAPI调用。

目前,它应检测可用空间,并应使用您指定的大小创建对话框。也就是说,Dialog占用了生成窗口的大小。因此,如果您有两个显示器,一个4k,一个是1280x720,并且您生成一个1920x1080对话框,它看起来很大,并且不会缩小以适应。这是目前的限制。

如果您遇到任何问题,请告诉我。这是示例代码:

(function () {
    $(document).ready(function () {
        Office.initialize = function () {
            // specify the HTTPS url and width and height in pixels.
            // the fourth parameter is to switch to using Microsoft Teams Dialog.

            var dialog = new OfficeHelpers.Dialog('<dialog url>', 1024, 768);
            dialog.result.then(function (value) {
                console.log(value);
            }).catch(function (error) {
                OfficeHelpers.Utilities.log(error);
            });            
        }
    });
})();

// Some where in the Dialog
OfficeHelpers.Dialog.close({
    a: 1,
    alpha: 2,
    'meao': 'cat',
    b: {
        a: 1,
        alpha: 2,
        'meao': 'cat',
    }
});