Слушатели событий window.open не работают в Android 4.4.2

У меня есть приложение PhoneGap, которое использует InAppBrowser для загрузки опыта входа в Google. Таким образом, мне нужен прослушиватель событий, который обнаруживает, когда браузер меняет местоположение. Установка ниже прекрасно работает на всех версиях Android, за исключением 4.4.2, насколько я могу судить; Прослушиватель событий срабатывает, и все хорошо.

Тем не менее, на Android 4.4.2 я не могу заставить слушателей событий загореться для окна; Loadstart, onload, onscroll и т. Д. Кажется, что ничего не срабатывает. К сожалению, похоже, вы не можете найти какие-либо решения в Google или StackOverflow.

Не уверен, какая дополнительная информация нужна / полезная, но с удовольствием что-то даю.

var auth_window = window.open(auth_url, '_blank', 'location=no,toolbar=no'); auth_window.addEventListener('loadstart', function(event) { alert("blah") }) 

***Обновить***

Я смог заставить слушателя стрелять, возвращаясь из InAppBrowser и снова открывая его. Я понятия не имею, почему это будет работать в этом случае, но не иначе. Любая помощь здесь была бы очень оценена.

Solutions Collecting From Web of "Слушатели событий window.open не работают в Android 4.4.2"

Постоянный вызов exec принудительно обрабатывает сообщения.

 setInterval(function () { cordova.exec(null, null, '', '', []) }, 200); 

Я использую этот хак в meteor-phonegap-oauth, https://github.com/jperl/meteor-phonegap-oauth/blob/badfb932bb0b525a32c35115eb75edb8d21bbf57/patch_window.js#L20-L29

Это также устранит проблему, с которой плагины не вызывают обратный вызов до следующего действия плагина, например: Невозможно использовать асинхронные методы в Кордове 3.4. Onsuccess не вызывается после первого вызова метода плагина

У вас может быть старая версия PhoneGap / Cordova, которая не поддерживает Android 4.4.x очень хорошо. В этом случае вам следует обновить PhoneGap / Cordova.

Попробуй это :

 window.open("http://google.com", '__blank'); 
 var auth_window = window.open(auth_url, '_blank', 'location=no,toolbar=no'); 

Я думаю, что третий параметр выше метода – это Параметры, и есть только один параметр, который является «местоположением» да или нет, для этого метода нет такой опции, как «панель инструментов».

Поэтому удалите дополнительную опцию после запятой, и я думаю, что с вами все будет в порядке.

Вот объяснение из документации по телефонному разрыву

Options: опции для InAppBrowser (String) (необязательно, по умолчанию: «location = yes»)

Строка параметров не должна содержать пробела, каждое имя функции и значение должны быть разделены запятой. Поддерживается только приведенное ниже значение:

> Location – установите «да» или «нет», чтобы включить или отключить панель местоположений для InAppBrowser