Проблема:
Предыстория такая. Есть сайтик на localhost, использующий авторизацию через вк`ашное OpenAPI. Работает авторизация везде, кроме IE. В IE, как и в других браузерах, по нажатию кнопки входа вызывается VK.Auth.login(), открывающая popup, который запрашивает доступ подключенного сайта к информации с ВК:
После того, как юзер нажмет "Разрешить" или "Отмена", или просто закроет popup, должен вызваться callback, переданный в VK.Auth.login() единственным параметром. Во всех браузерах все работет как нужно, а вот IE вызывает callback, не дожидаясь каких-либо действий с popup`ом.
После отладки выяснилось, что причина такого поведения кромется в том, что IE по какой-то причине при вызове window.open() возвращает ull вместо объекта, описывающего открытое окно.
Причина:
Причина крылась в том, что localhost и vk.com расположены в разных зонах: первый - в зоне "Местная интрасеть", второй - "Интернет", и открытие popup`а является в таком случае межзонным.
Решение:
Вариант 1: отключить защищенный режим для зоны "Интернет", сняв соотв. галочку:
Вариант 2: убрать localhost из зоны "Местная интрасеть" снятием галочки:
Тут правда мы лишаемся некоторых ништяков, например, возможности использовать объект "console" в JS-скриптах.
Комментариев нет:
Отправить комментарий