У меня есть PWA, который по сути перенаправляет пользователя в приложение сообщений при открытии с использованием Javascript. С выпуском iOS 12 и изменениями в PWA веб-страница больше не инициализируется повторно и не выполняет Javascript при повторном открытии или при повторном получении фокуса. Вместо этого теперь он загружает ранее сохраненное состояние и не будет повторно выполнять Javascript.
У кого-нибудь есть идеи по этому поводу? Могу ли я принудительно выполнять Javascript каждый раз, когда PWA получает фокус? Могу ли я заставить страницу повторно инициализироваться при загрузке?
Пример кода ниже:
<html manifest = "ios/scripts/offline.manifest">
<head>
<meta content = "en-us" http-equiv = "Content-Language" />
<meta content = "text/html; charset=utf-8" http-equiv = "Content-Type" />
<title>SMS</title>
<meta name = "viewport" content = "width=device-width, initial-scale=1">
<meta name = "apple-mobile-web-app-title" content = "SMS">
<meta name = "apple-mobile-web-app-capable" content = "yes" />
<meta name = "apple-mobile-web-app-status-bar-style" content = "black" />
<link rel = "apple-touch-icon" sizes = "180x180" href = "ios/img/[email protected]">
<link rel = "apple-touch-startup-image" href = "ios/img/LaunchImage-1125@3x~iphoneX-portrait_1125x2436.png" media = "(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
</head>
<body>
<script>
if (window.navigator.standalone) {
document.write('<a id = "url" href = "sms:1111111111" name = "url"></a>');
var e = document.getElementById('url');
var ev = document.createEvent('MouseEvents');
ev.initEvent('click', true, true);
e.dispatchEvent(ev);
}
</script>
</body>
</html>



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Взгляните на этот пост о состоянии PWA: Прогрессивное веб-приложение в iOS 12.2 Beta 1 (сборка 16E5181f)
Я вижу, что новый PWA сохраняет последнее состояние при выходе из приложения. Есть ли способ предотвратить это?
Я столкнулся с той же проблемой. Вот что я сделал, чтобы заставить PWA выполнять javascript при запуске:
Каждый раз, когда PWA открывается, он запускает событие видимости страницы и выполняет ваш скрипт.
Пример: в вашем html файле:
<script>
registerPageVisibility()
</script>
function registerPageVisibility() {
let hidden;
let visibilityChange;
if (typeof document.hidden !== 'undefined') { // Opera 12.10 and Firefox 18 and later support
hidden = 'hidden';
visibilityChange = 'visibilitychange';
} else if (typeof document.msHidden !== 'undefined') {
hidden = 'msHidden';
visibilityChange = 'msvisibilitychange';
} else if (typeof document.webkitHidden !== 'undefined') {
hidden = 'webkitHidden';
visibilityChange = 'webkitvisibilitychange';
}
window.document.addEventListener(visibilityChange, () => {
if (!document[hidden]) {
//put your script here and it will be execute everytime when PWA is opened.
}
});
}Проблема заключалась в использовании функции document.write, так как страница перезаписывалась и очищалась после выполнения.
Я также сталкиваюсь с той же проблемой после открытия почтового приложения с тегом <a>. Я застрял на пустом экране. Кто-нибудь сталкивался с такой же проблемой?