【问题标题】:How to move a window after restart with the window API for chrome app?如何在重新启动后使用 chrome 应用程序的窗口 API 移动窗口?
【发布时间】:2014-04-17 05:34:04
【问题描述】:

正如这里提到的: https://developer.chrome.com/apps/app_window#method-create

如果您为您的窗口使用 ID(如果您不喜欢两次启动应用程序,则需要)存储大小的位置。他们建议您创建隐藏移动的窗口并在显示之前重新调整其大小。

如果我尝试在这样的特定屏幕上创建一个窗口:

var left =  parseInt(displayInfo.workArea.left);

chrome.app.window.create('index.html', {
      id: 'window-'+displayInfo.id,
      hidden: true,
      bounds: {left: left, top: 0, width: 100 , height: 100  }
, callbackWindow.bind(null, left, 0, displayInfo));

var callbackWindow = function (left, top, displayInfo, createdWindow) {
    createdWindow.moveTo(displayInfo.workArea.left, displayInfo.workArea.top);
    console.log(createdWindow.id, createdWindow.getBounds());
    createdWindow.show();
};

应用程序第一次启动时窗口位于正确的位置,现在如果我们移动窗口并重新调整大小,然后重新启动应用程序。停留在与关闭前相同的药水上。

换句话说,我们不能覆盖存储的位置。这是一个错误还是应该这样工作?

我已经在 Windows 7 上使用 Chrome 32.0.1700.107 dev-m 进行了测试

【问题讨论】:

  • 不要在标题中“乞求错误”。只需提出问题并陈述观察到的行为即可。

标签: javascript google-chrome google-chrome-app


【解决方案1】:

moveTo 是标准的 DOM moveTo。 AppWindow 对象只是将 moveTo 和 resizeTo 函数转发给 window 对象。

如果您尝试改用 AppWindow.setBounds 会发生什么?我猜测,但尚未测试,DOM 函数被忽略,因为窗口不可见。

另外,您使用的是相当旧的 Chrome 版本。我认为当前的稳定版本是 34。

【讨论】:

【解决方案2】:

关于如何调用moveTo 的文档有点不清楚。

请尝试以下格式,以符合其他参数化调用:

createdWindow.moveTo({
    left: displayInfo.workArea.left,
    top: displayInfo.workArea.top
});

【讨论】:

  • 还有createdWindow.resizeTo({width: 150, height: 150});createdWindow.resizeTo(150, 150); 对重启没有任何影响。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多