Событие загрузки InAppBrowser не вызывает проблем с запуском - PullRequest
0 голосов
/ 27 августа 2018

(Это приложение для телефонной связи, для iOS и Android, использующее JS / HTML / CSS)

Я открываю ссылки, которые хочу использовать в приложении, используя селектор классов 'external'. Итак, у меня есть следующий код для открытия этих ссылок:

$("body").on("click", "a.external", function(){
    var thisHref = $(this).attr("href");
    appBrowser = cordova.InAppBrowser.open(thisHref, '_blank', 'location=no, zoom=no');
    appBrowser.addEventListener('loadstart', function(event) { 
    if (event.url == "XXXXX") { appBrowser.close(); }
});

На самих внешних URL-адресах я установил ссылки, ссылающиеся на «XXXXX», которые должны закрывать inAppBrowser. Все работает на эмуляторе Phonegap Desktop на все 100%, но когда я устанавливаю файлы .apk или .ipa на реальные устройства, loadstart не запускается, КРОМЕ первого щелчка внутри приложения.

Это наводит меня на мысль, что это проблема с областью действия, так как похоже, что слушатель подхватывает только когда loadstart происходит сразу после нажатия на a.external. (P.S. appBrowser определен глобально [var appBrowser; вверху]).

Я не совсем уверен, как расположить код так, чтобы слушатель подключался и продолжал работать все время. Я попытался разместить addEventListener самостоятельно, внутри функции deviceready или целиком внутри deviceready (ни одна из них не работает).

Так что я надеюсь, что здесь чего-то не хватает, и это действительно проблема масштаба. Хотя странно, что он работает как на эмуляторе, но только при первом нажатии на самих устройствах.

Спасибо!

1 Ответ

0 голосов
/ 27 августа 2018

Вот соответствующие части того, как я настраиваю вещи в моем проекте phonegap, используя InAppBrowser, что, если я правильно понимаю ваш вопрос, похоже на то, как вы хотите настроить.

PhoneGap-bootstrap.js

onDeviceReady: function() {
    window.open = cordova.InAppBrowser.open;
}

при открытии ссылок

window.open(url, '_system', 'location=yes');

Полагаю, вам не нужен флаг местоположения, но он сохраняет строку URL при открытии нового окна. Надеюсь, это поможет, я помню, что в какой-то момент мне нужно было это выяснить, но любое большее объяснение, которое я мог бы, было потеряно в моей памяти.

...