Я открываю новое окно, чтобы завершить настройку Instagram следующим образом:
var newWindow = window.open(url, 'Instagram Login', 'scrollbars=yes, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);
где url
- это просто oauth-путь для данного приложения. После аутентификации следующий код ищет функцию, которая была определена на стороне приложения для запуска обратного вызова:
if (window.opener && window.opener.foo) {
window.opener.foo("photo:social:login:success", gon.social_profile);
}
Это работает безупречно как на настольном компьютере, так и на ios, но Android Chrome говорит мне, что window.opener
равно нулю, что означает, что обратный вызов никогда не достигается.
Странная часть в том, что, пробуя точно такой же поток в окне инкогнито в Android Chrome, он работает без каких-либо проблем. window.opener
указывает на исходное окно, и функция обратного вызова успешно срабатывает.
Я уже пытался использовать parent.window.opener
, а также top.window.opener
, поскольку код, открывающий всплывающее окно, находится внутри iframe, но, похоже, это не имеет значения. Есть ли причина, почему Android будет действовать здесь по-другому?