2014-05-29 3 views
1

Я создаю приложение для Chrome, имеющее две страницы [на данный момент]. А по страницам - средние фактические .html-файлы. Один называется login.html, а другой - index.html.Окно Google Apps для пакетных приложений

Теперь все, что связано с пользователем, хранится в chrome.storage.local.

Вот код для запуска страниц в chrome.js.

chrome.app.runtime.onLaunched.addListener(function() { 
    var dimensions = getDimensions(screen), 
     positions = getPositions(screen); 

    chrome.storage.local.get('login', function (result) { 
     if(result.login.status === "loggedOut") { 
      chrome.app.window.create('login.html', { 
       id: 'loginWindow', 
       'bounds': { 
        'width': 400, 
        'height': 600 
       }, 
       minWidth: 400, 
       minHeight: 600, 
       maxWidth: 400, 
       maxHeight: 600, 
       frame: 'none' 
      }); 
     } else { 
      chrome.app.window.create('index.html', { 
       id: 'mainWindow', 
       'bounds': { 
        'top':  positions.top, 
        'left':  positions.left, 
        'width': dimensions.width, 
        'height': dimensions.height 
       }, 
       minWidth: dimensions.width, 
       minHeight: dimensions.height, 
       maxWidth: dimensions.width, 
       maxHeight: dimensions.height, 
       frame: 'none' 
      }); 
     } 
    }); 
}); 

Теперь, потому что chrome.storage.local.get login.status === loggedOut она появляется страница входа с формой входа. Итак, как мне работать, когда пользователь вводит правильные учетные данные. Как закрыть окно входа в систему, а затем открыть главный. Вышеупомянутый код - это просто открыть index.html в следующий раз и не показывать логин снова.

Я сделал код, чтобы проверить учетные данные и что работает, но я хочу закрыть окно формы входа и открыть новый index.html с теми же границами, max-, minwidth и высотами, как вы можете видеть в код выше.

Вот что я ищу: [это теперь в login.js, которая называется внутри login.html]

if(login === success) { 
    // close login window and goto mainWindow 
} else { 
    // Username or password is wrong 
} 

Заранее спасибо!

ответ

1

Что вам нужно сделать, чтобы выполнить это, нужно добавить этот контроль, если изменения происходят внутри chrome.storage.local.

chrome.storage.onChanged.addListener(function(changes, namespace) { 
    chrome.storage.local.get('login', function (result) { 
     if (result.login.status === "loggedIn") { 
      chrome.app.window.get('loginWindow').close(); 
      chrome.app.window.create('index.html', { 
       id: 'mainWindow', 
       'bounds': { 
        'top':  positions.top, 
        'left':  positions.left, 
        'width': dimensions.width, 
        'height': dimensions.height 
       }, 
       minWidth: dimensions.width, 
       minHeight: dimensions.height, 
       maxWidth: dimensions.width, 
       maxHeight: dimensions.height, 
       frame: 'none' 
      }); 
     } 
    }); 
}); 

Конечно, вы можете использовать эти изменения и пространства имен, но я решил оставить их.

0

MiroRauhala ответила на ваш прямой вопрос, но, возможно, вам стоит переосмыслить, как структурировано ваше приложение.

Приложения Chrome не имеют навигации, как обычный сайт. У них есть окна, и каждое окно соответствует другой странице html. Вместо того, чтобы закрывать одно окно и открывать новый с теми же границами, вы можете просто иметь разные div в одном документе, которые вы скрываете и показываете по мере необходимости.

Я думаю, что изменение структуры приведет к более простому приложению в долгосрочной перспективе.

Если вы идете с отдельным окном, вам нужно быть осторожным. Например, если вы добавляете id в окно и указываете границы, границы применяются только при первом показе. Впоследствии он помнит границы. Вы можете обойти это, создав его скрытым, затем перемещая его, а затем показывая его. Вы можете столкнуться с другими вещами, подобными этому, поскольку вы используете платформу приложений Chrome, таким образом, чтобы она не была разработана.

+0

Этот оконный переключатель применяется только при входе в систему и после входа пользователя в систему они могут делать все внутри этого окна (другое содержимое будет вызываться ajax). И это все еще предварительный предварительный альфа-бета-не-стабильный релиз, поэтому не беспокойтесь, я просто хотел узнать больше Chrome SDK и поиграть. Я могу оставить это в будущем. Если у вас установлен Spotify, вы можете увидеть, чего я пытаюсь достичь. – MiroRauhala

Смежные вопросы