У меня проблема с WKWebView, который не запускает событие «онлайн». По сути, у меня есть веб-просмотр, загружающий локальную страницу html (примеры ниже). На этой странице у меня есть прослушиватели событий, которые запускаются в зависимости от изменений состояния сети. Когда я выключаю inte rnet на устройстве, на котором запущен эмулятор, возникает событие и изменяется статус. Обратное неверно, это означает, что когда устройство повторно подключается к inte rnet, событие не запускается, и моя страница остается в автономном состоянии, даже если она подключена.
Я пробовал отладку через safari, но это просто подтверждает то, что я написал выше
Создание веб-просмотра
let frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height)
let config = WKWebViewConfiguration()
let userContentController = WKUserContentController()
config.userContentController = userContentController
config.userContentController.add(self, name: "loadData")
config.preferences = WKPreferences()
config.preferences.javaScriptEnabled = true
webView = WKWebView(frame: frame, configuration: config)
загружен источник iframe
<div id="online-status"></div>
const onlineStatusContainer = document.querySelector("#online-status");
onlineStatusContainer.innerHTML = navigator.onLine ? "online" : "offline";
var goOnline = function () {
console.log("goOnline");
onlineStatusContainer.innerHTML = "online";
};
var goOffline = function () {
console.log("goOffline");
onlineStatusContainer.innerHTML = "offline";
};
window.addEventListener("online", goOnline);
window.addEventListener("offline", goOffline);
При первом открытии веб-просмотра я получаю сообщение «онлайн». при вырезании inte rnet он меняется на «offline». при возвращении в онлайн он не меняется.
Я пробовал это на iPhone 8 и iPhone 11, но безуспешно