WKWebView не запускает интерактивное событие - PullRequest
0 голосов
/ 18 июня 2020

У меня проблема с 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, но безуспешно

...