В моем приложении телефонной связи я открываю InAppBrowser внешнюю ссылку (она работает правильно) с помощью:
cordova.InAppBrowser.open(completeUrl, '_blank', 'location=yes');
Мне нужно закрыть открытую ссылку, когда пользователь совершает определенные действия. Я знаю, что могу закрыть его с помощью
var b = cordova.InAppBrowser.open(completeUrl, '_blank', 'location=yes');
b.Close();
но это на стороне моего приложения, мне нужно что-то подобное на стороне внешней ссылки. Например, возможно ли иметь ссылку на экземпляр на стороне внешней ссылки? Я думаю нет, да?
С «location = yes» у меня есть удобная кнопка закрытия вверху, так что это может быть решением, но я хотел бы закрыть ее, когда пользователь закончит использовать внешнюю ссылку, не используя собственную кнопку закрытия.
Является ли это возможным?
ОБНОВИТЬ Что я пробовал? 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) Тупое окно.Закрыть() с вызываемой страницы
Ни одна из моих попыток не сработала.
Чтобы закрыть окно InAppBrowser само по себе, вы можете использовать прослушиватели событий loadstart
или message
. Обратите внимание, что для работы последнего требуется Cordova-plugin-inappbrowser 3.1.0-dev.
Проверьте подробности и полные примеры здесь: Как закрыть окно InAppBrowser в Cordova самостоятельно
Я рекомендую использовать метод loadstart
и просто проверить загруженный URL, это работает со стабильным плагином.