2015-01-31 2 views
1

내 응용 프로그램에 설정 창이 있습니다. 사용자가 동시에 두 설정 창을 표시 할 수 없도록이 창을 고유하게하려고합니다. 문제는 창을 주 창과 비교하여 중앙에 배치되기를 원합니다. id 지정되고 일치 id와 윈도우 전에 도시되었는지ID가있는 창에서 경계 설정

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

문제는 기억 bounds가 사용될되어 있지만 I : I는 (메인 윈도우의 JS에서)이 코드를 사용 경계 옵션을 사용하여 모든 생성시에 경계를 직접 설정하는 것을 선호합니다. 따라서 사용자가 창을 이동하고 창을 닫으면 다음 위치에서 위치가 여전히 "완벽"합니다. 이 문제를 해결할 솔루션이 있습니까?

도움 주셔서 감사합니다.

답변

1

이 문제를 무시할 수 없습니다.

당신은 outerBounds.setPosition를 사용하여 콜백에서 생성 즉시 창 위치를 변경할 수 있습니다 :

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

을 그건 그렇고, bounds이되지 않습니다, 당신은 innerBounds/outerBounds 사용으로 전환해야한다.


또는 고유 한 ID 시스템을 구현할 수 있습니다. ID를 사용하지 말고 필요한 윈도우가 생성되기 전에 열려 있는지 확인하십시오 (어떻게 든 식별).

+0

ID를 사용하지 않는 경우 ID가 이미 열려 있는지 확인하려면 어떻게해야합니까? 또한 앱을 다시로드하면 새로 만든 창에 과거 경계가 기억됩니다 (예 : 수동으로 크기를 조정 한 경우). 이것을 무시할 수없는 오류입니다. – Gerard