Как закрыть PhoneGap / Cordova InAppBrowser без использования кнопки закрытия - PullRequest
1 голос
/ 22 мая 2019

В моем приложении phonegap я открываю в InAppBrowser внешнюю ссылку (она работает правильно) с:

cordova.InAppBrowser.open(completeUrl, '_blank', 'location=yes');

Мне нужно закрыть открытую ссылку, когда пользователь выполняет определенные действия. Я знаю, что могу закрыть его с

var b = cordova.InAppBrowser.open(completeUrl, '_blank', 'location=yes');
b.Close();

но это на моей стороне приложения, мне нужно что-то похожее на стороне внешней ссылки. Например, возможно ли иметь ссылку на экземпляр на стороне внешней ссылки? Я думаю нет, верно?

С "location = yes" у меня есть удобная кнопка закрытия вверху, так что это может быть решением, но я бы хотел закрыть ее, когда пользователь закончит использовать внешнюю ссылку, без использования собственной кнопки закрытия .

Возможно ли это?

UPDATE Что я пробовал? 1) Из window.close эквивалент в Phonegap с InAppBrowser Например, мой сервер отображает веб-страницу с кнопкой закрытия, примерно так:

<a href="/mobile/close">Close</a>

в моем клиентском javascript (приложение Phonegap):

var ref = window.open(encodeURI(url), '_blank', options);
ref.addEventListener('loadstop', function(event) {        
    if (event.url.match("mobile/close")) {
        ref.close();
    }
});

2) С https://stackoverflow.com/a/50047473/819161

var win=window.open( "myurl", "_blank");
win.addEventListener( "loadstop", function(){
       var loop = window.setInterval(function(){
           win.executeScript({
                   code: "window.shouldClose"
               },
               function(values){
                   if(values[0]){
                     win.close();
                     window.clearInterval(loop);
                   }
               }
           );
       },100);
   });

В вашем вызываемом окне просто выполните:

window.shouldClose=true

Когда вы хотите закрыть его

3) Тупое окно. Закрыть () с вызываемой страницы

Ничего из моих попыток не сработало.

1 Ответ

0 голосов
/ 09 июня 2019

Чтобы закрыть окно InAppBrowser, вы можете использовать прослушиватели событий loadstart или message.Обратите внимание, что для работы последнего необходим cordova-plugin-inappbrowser 3.1.0-dev .

Подробности и полные примеры можно посмотреть здесь: Как самостоятельно закрыть окно InAppBrowser в Cordova

Я рекомендую использовать метод loadstart и просто проверить загруженный URL, это работает со стабильным плагином.

...