Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: JavaScript, Swift, WKWebView, JavaScriptCore, hybrid app

Можно ли вызвать JavaScript из Swift?

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

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

Да, вызвать JavaScript из Swift можно, и это часто требуется в гибридных приложениях. Основной способ — использование компонента WKWebView, который позволяет загружать веб-контент и выполнять в нём JavaScript-код. Также можно использовать фреймворк JavaScriptCore для прямого выполнения JS-кода без веб-представления. Это позволяет нативным приложениям взаимодействовать с веб-компонентами, например, для обновления интерфейса или обработки данных.

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

Взаимодействие между Swift и JavaScript — ключевая возможность для создания гибридных приложений, где часть логики или интерфейса реализована с помощью веб-технологий. Это позволяет повторно использовать код и ускорить разработку.

Основные подходы

Существует два основных способа вызова JavaScript из Swift:

  • WKWebView: Компонент из фреймворка WebKit, который отображает веб-контент. Через него можно выполнять JS-код в контексте загруженной страницы.
  • JavaScriptCore: Фреймворк, предоставляющий прямую среду выполнения JavaScript. Он позволяет оценивать JS-код, создавать объекты и вызывать функции без необходимости веб-представления.

Пример с WKWebView

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

import WebKit

class ViewController: UIViewController {
    let webView = WKWebView()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(webView)
        // Загружаем HTML или URL
        let html = "Hello"
        webView.loadHTMLString(html, baseURL: nil)
        
        // Вызываем JavaScript после загрузки
        webView.evaluateJavaScript("document.title") { result, error in
            if let title = result as? String {
                print("Title from JS:", title)
            }
        }
    }
}

Метод evaluateJavaScript выполняет строку JS и возвращает результат в Swift через замыкание. Это полезно для получения данных из веб-интерфейса или вызова функций, определённых в загруженном скрипте.

Пример с JavaScriptCore

JavaScriptCore подходит для случаев, когда вам нужно выполнить чистую JavaScript-логику без отображения веб-страницы. Например, для вычислений или обработки данных:

import JavaScriptCore

let context = JSContext()
// Выполняем JS-код
context?.evaluateScript("""
    function add(a, b) {
        return a + b;
    }
""")
// Вызываем функцию из Swift
let addFunction = context?.objectForKeyedSubscript("add")
let result = addFunction?.call(withArguments: [5, 3])
print("Result:", result?.toString() ?? "none") // Вывод: 8

Этот подход даёт полный контроль над средой выполнения JS, но не связан с UI.

Где это применяется

Такое взаимодействие часто используется в:

  • Гибридных приложениях (например, с использованием Cordova или Capacitor).
  • Встраивании веб-виджетов или рекламных баннеров.
  • Выполнении динамических сценариев, конфигурируемых на стороне сервера.
  • Тестировании или прототипировании, когда логику можно быстро изменить в JS.

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

  • Аватар

    iOS Guru

    Roman Isakov

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

Уровень

  • Рейтинг:

    3

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

  • Swift

    Swift

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

#JavaScript

#Swift

#WKWebView

#JavaScriptCore

#hybrid app

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

  • Аватар

    iOS Guru

    Roman Isakov

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