如何使用Chrome应用程序的窗口API重新启动后移动窗口?

时间:2014-04-17 05:34:05

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

如上所述: 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();
};

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

换句话说,我们无法覆盖存储的位置。这是一个Bug还是应该像这样工作?

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

请尝试使用以下格式,与其他参数化调用一致:

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