在具有 id 的 window 上设置边界

Set bounds on a window that has an id

我的应用程序有一个设置 window,我希望这个 window 是唯一的,这样用户就不能同时显示两个设置 windows。问题是我还希望 window 与主 window 相比居中。我使用这段代码(在主要window的JS中):

chrome.app.window.create("settings.html",
   {
        alwaysOnTop: true,
        bounds: {
            left: Math.round((window.screenX + (($(window).width() - 498) / 2))), // Perfect left position.
            top: Math.round((window.screenY + (($(window).height() - 664) / 2))), // Perfect top position.
            width: 498,
            height: 664
        },
        frame : "none",
        id: "settings",
        resizable: false
    }
);

问题是,如果指定了 id,并且之前显示了具有匹配 id 的 window,则将使用记住的 bounds,但我我更愿意在每次使用 bounds 选项创建时自己设置边界。因此,如果用户移动 window 并关闭它,则在下一次创建时该位置仍将是 "perfect"。是否有解决此问题的方法?

感谢您的帮助。

恐怕你不能覆盖它。

您可以在回调中创建后立即重新定位 window,使用 outerBounds.setPosition:

chrome.app.window.create(
  "settings.html",
  {/*...*/},
  function(win) {
    win.outerBounds.setPosition(
      /*left, top*/
    );
  }
);

顺便说一下,bounds 已弃用,您应该改用 innerBounds/outerBounds


或者,您可以尝试实施自己的 ID 系统。不要使用 ID,并在创建之前检查您需要的 window 是否已打开(以某种方式识别它)。