Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: WKWebView, JavaScript, iOS, Swift, evaluateJavaScript, web view

Как из Swift узнать, что в WKWebView выполнился JavaScript?

Этот вопрос проверяет умение отслеживать выполнение JavaScript-кода внутри WKWebView, что необходимо для синхронизации нативного и веб-интерфейсов в iOS-приложениях.

Короткий ответ

Чтобы узнать, что JavaScript выполнился в WKWebView, используйте метод `evaluateJavaScript(_:completionHandler:)`. Этот метод асинхронно выполняет переданный скрипт и вызывает completion handler, когда выполнение завершено. В обработчике вы получаете результат или ошибку, что подтверждает завершение. Это основной способ взаимодействия между нативным кодом Swift и веб-контентом.

Длинный ответ

WKWebView — это компонент для отображения веб-контента в iOS-приложениях. Часто возникает необходимость выполнить в нём JavaScript-код и получить уведомление о завершении этой операции, чтобы обновить нативный интерфейс или передать данные.

Основной метод: evaluateJavaScript

Ключевой метод для этого — evaluateJavaScript(_:completionHandler:). Он принимает строку с JavaScript-кодом и замыкание (completion handler), которое вызывается после выполнения скрипта. Замыкание возвращает опциональный результат (например, значение, возвращённое скриптом) и опциональную ошибку.

let webView = WKWebView()
// ... загрузите контент в webView

let javascriptCode = "document.title;"
webView.evaluateJavaScript(javascriptCode) { (result, error) in
    if let error = error {
        print("Ошибка выполнения JS: \(error.localizedDescription)")
        return
    }
    // result содержит значение, возвращённое скриптом (например, заголовок страницы)
    print("JavaScript выполнен. Результат: \(result ?? 'нет данных')")
    // Здесь можно обновить UI или выполнить другую логику
}

Практическое применение

  • Извлечение данных: Получение заголовка страницы, содержимого полей форм или состояния элементов.
  • Взаимодействие с веб-приложением: Вызов функций, определённых в загруженной веб-странице, для изменения её поведения.
  • Синхронизация: Ожидание выполнения критического скрипта перед переходом к следующему шагу в нативном коде.

Важно помнить, что метод выполняется асинхронно и работает в основном потоке, поэтому для обновления UI дополнительная диспетчеризация не требуется. Однако, если JavaScript-код выполняется долго, это может заблокировать UI, поэтому сложные операции лучше разбивать.

Вывод: Используйте evaluateJavaScript с completion handler, когда вам нужно выполнить скрипт в WKWebView и точно знать момент его завершения, например, для получения данных из веб-страницы или управления гибридным приложением.

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

  • Swift

    Swift

Ключевые слова

#WKWebView

#JavaScript

#iOS

#Swift

#evaluateJavaScript

#web view

Подпишись на iOS Developer в телеграм

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.