2015-08-06 2 views
1

Я строю приложение, в котором поток идет аутентификации следующим образомКак определить, поддерживает ли браузер window.close?

  • пользователь нажимает кнопку входа в систему
  • открывает окно Логин.
  • Пользователь перенаправляется в Facebook, Google или Twitter, в зависимости от строки запроса.
  • Когда пользователь возвращается из фба/Google/твиттера, мой бэкенд генерирует маркер аутентификации, а всплывающее окно использует PostMessage для отправки маркеров аутентификации на главную страницу, проверить происхождение
  • главной страница закрывающие е окно после получения токена.

Этот поток отлично работает на настольных устройствах, но не в мобильных браузерах, где window.open открывает новую вкладку, которая не может быть программно закрыта.

На мобильных устройствах я могу перенаправить пользователя на экран входа в систему и отправить их обратно с токеном auth в хэш-фрагменте (неявный поток oauth2), но я только хочу это сделать, когда это необходимо. Как определить, работает ли window.close без взлома браузера?

То, что я пытался

Я попытался с помощью/модальный диалог на основе JS HTML с фрейма в нем, но страница Войти Google не позволяет встраивать их в плавающем фрейме, я не пробовал с другими поставщиками

+0

Используйте jquery или другое диалоговое окно js framework, а не окна или всплывающие окна. – Jkike

+0

Дело в том, что во время процесса входа я перенаправляюсь в Google, Facebook или Twitter. Страница входа в Google не хочет быть встроенной в iframe. Я уже пробовал это, но спасибо за ваш ответ, @Jkike. – bigblind

+0

@Jkike Иногда всплывающее окно является правильным решением. Похоже, это может быть в этом случае. –

ответ

1

вы можете проверить, если window.close() поддерживается обнаружение объекта:

if (window.close) { 
    alert ('window close is supported'); 
} 

Do чека без paranthesis (), как вы не хотите, чтобы выполнить функцию, но нужно проверить для существования в функция/объект.

+0

desktop chrome говорит, что window.close() - это функция, но это не говорит нам о том, работает ли ее вызов или нет ... – dandavis

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