У меня есть приложение Cordova, которое загружает приложение Angularjs (скажем, ' MyAngularApp ') с сервера на основе некоторой логики сопоставления версий. Это приложение ' MyAngular ' находится в заархивированной папке, которую мое приложение cordova распаковывает и сохраняет в постоянном месте на мобильном устройстве.
После успешной загрузки MyAngularApp 'и разархивировав, я запускаю ' MyAngularApp / index.html ' из постоянного местоположения на устройстве, используя файл: //path_to_angularjs_application_in_device/MyAngularApp/index.html
Теперь,Проблема, с которой я сталкиваюсь, заключается в том, что когда пользователь нажимает на ссылку в « MyAngularApp » на iOS, блокировщик всплывающих окон блокирует открытие страниц. Код, который написан внутри ' MyAngularApp ' для открытия страницы:
function openUrlInNewTab(url, params, isExternal) {
if (params) {
url += '#' + params;
}
var windowName = url.startsWith('mailto') ? '_self' : '_blank';
$window.open(url, windowName);
}
Я знаю, если мы сможем внести изменения выше, чтобы изменить код и заменить _blank на _system, он долженработать теоретически, но проблема в том, что я не могу внести изменения в коде MyAngularApp .
Я пытался отключить настройку popupblocker из настроек safari, но это не помогло. Здесь нужно учесть, что я не могу внести изменения в коде MyAngularApp . Я могу изменить только свое собственное приложение Cordova, которое загружает это MyAngularApp .
Эта проблема возникает только в iOS. Это прекрасно работает на Android. Проверено на iOS версии 12+. Cordova версия 7.0.0
Что я пробовал?
- Перейти к
Settings
→ Safari
→ Block Pop-ups
→ Disable
(Не работает. Новое окно все еще не открывается) - Установите плагин cordova InAppBrowser и назначьте
window.open = cordova.InAppBrowser.open
(Не работает, потому чтопроблема здесь в том, что этот фрагмент, если код будет применим до тех пор, пока не загрузится мое приложение Cordova. Как только ' MyAngularApp ' загружается, контекст меняется, и этот фрагмент кода больше не находится в контексте).
Есть идеи?