:github_url: hide .. _class_JavaScriptBridge: JavaScriptBridge ================ **Наследует:** :ref:`Object` Синглтон, который связывает движок с контекстом JavaScript браузера при веб-экспорте. .. rst-class:: classref-introduction-group Описание ---------------- Синглтон JavaScriptBridge реализован только в экспорте Web. Он используется для доступа к контексту JavaScript браузера. Это позволяет взаимодействовать со встроенными страницами или вызывать сторонние JavaScript API. \ **Примечание:** Этот синглтон можно отключить во время сборки для повышения безопасности. По умолчанию синглтон JavaScriptBridge включён. В официальных шаблонах экспорта синглтон JavaScriptBridge также включён. Подробнее см. в разделе :doc:`Компиляция для Web <../engine_details/development/compiling/compiling_for_web>` в документации. .. rst-class:: classref-introduction-group Обучающие материалы -------------------------------------- - :doc:`The JavaScriptBridge singleton <../tutorials/platform/web/javascript_bridge>` .. rst-class:: classref-reftable-group Методы ------------ .. table:: :widths: auto +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`JavaScriptObject` | :ref:`create_callback`\ (\ callable\: :ref:`Callable`\ ) | +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Variant` | :ref:`create_object`\ (\ object\: :ref:`String`, ...\ ) |vararg| | +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`download_buffer`\ (\ buffer\: :ref:`PackedByteArray`, name\: :ref:`String`, mime\: :ref:`String` = "application/octet-stream"\ ) | +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Variant` | :ref:`eval`\ (\ code\: :ref:`String`, use_global_execution_context\: :ref:`bool` = false\ ) | +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`force_fs_sync`\ (\ ) | +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`JavaScriptObject` | :ref:`get_interface`\ (\ interface\: :ref:`String`\ ) | +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`is_js_buffer`\ (\ javascript_object\: :ref:`JavaScriptObject`\ ) | +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedByteArray` | :ref:`js_buffer_to_packed_byte_array`\ (\ javascript_buffer\: :ref:`JavaScriptObject`\ ) | +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`pwa_needs_update`\ (\ ) |const| | +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`pwa_update`\ (\ ) | +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Сигналы -------------- .. _class_JavaScriptBridge_signal_pwa_update_available: .. rst-class:: classref-signal **pwa_update_available**\ (\ ) :ref:`🔗` Выдается, когда обнаружено обновление для этого прогрессивного веб-приложения, но оно ожидает активации, поскольку активна предыдущая версия. См. :ref:`pwa_update()`, чтобы принудительно выполнить обновление немедленно. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Описания метода ------------------------------ .. _class_JavaScriptBridge_method_create_callback: .. rst-class:: classref-method :ref:`JavaScriptObject` **create_callback**\ (\ callable\: :ref:`Callable`\ ) :ref:`🔗` Создает ссылку на :ref:`Callable`, которую можно использовать в качестве обратного вызова JavaScript. Ссылка должна сохраняться до тех пор, пока не произойдет обратный вызов, иначе она не будет вызвана вообще. См. :ref:`JavaScriptObject` для использования. \ **Примечание:** Функция обратного вызова должна принимать ровно один аргумент :ref:`Array`, который будет объектом JavaScript `arguments `__, преобразованным в массив. .. rst-class:: classref-item-separator ---- .. _class_JavaScriptBridge_method_create_object: .. rst-class:: classref-method :ref:`Variant` **create_object**\ (\ object\: :ref:`String`, ...\ ) |vararg| :ref:`🔗` Создает новый объект JavaScript с помощью конструктора ``new``. ``object`` должен быть допустимым свойством JavaScript ``window``. См. :ref:`JavaScriptObject` для использования. .. rst-class:: classref-item-separator ---- .. _class_JavaScriptBridge_method_download_buffer: .. rst-class:: classref-method |void| **download_buffer**\ (\ buffer\: :ref:`PackedByteArray`, name\: :ref:`String`, mime\: :ref:`String` = "application/octet-stream"\ ) :ref:`🔗` Предлагает пользователю загрузить файл, содержащий указанный ``buffer``. Файл будет иметь заданные ``name`` и ``mime`` тип. \ **Примечание:** Браузер может переопределить `MIME-тип `__, предоставленный на основе расширения файла ``name``. \ **Примечание:** Браузеры могут блокировать загрузку, если :ref:`download_buffer()` не вызывается из взаимодействия с пользователем (например, нажатием кнопки). \ **Примечание:** Браузеры могут запрашивать у пользователя разрешение или блокировать загрузку, если несколько запросов на загрузку выполняются в быстрой последовательности. .. rst-class:: classref-item-separator ---- .. _class_JavaScriptBridge_method_eval: .. rst-class:: classref-method :ref:`Variant` **eval**\ (\ code\: :ref:`String`, use_global_execution_context\: :ref:`bool` = false\ ) :ref:`🔗` Выполнить строку ``code`` как код JavaScript в окне браузера. Это вызов фактической глобальной функции JavaScript ``eval()``. Если ``use_global_execution_context`` равен ``true``, код будет оценен в глобальном контексте выполнения. В противном случае он оценен в контексте выполнения функции в среде выполнения движка. .. rst-class:: classref-item-separator ---- .. _class_JavaScriptBridge_method_force_fs_sync: .. rst-class:: classref-method |void| **force_fs_sync**\ (\ ) :ref:`🔗` Принудительная синхронизация постоянной файловой системы (если включено). \ **Примечание:** Это полезно только для модулей или расширений, которые не могут использовать :ref:`FileAccess` для записи файлов. .. rst-class:: classref-item-separator ---- .. _class_JavaScriptBridge_method_get_interface: .. rst-class:: classref-method :ref:`JavaScriptObject` **get_interface**\ (\ interface\: :ref:`String`\ ) :ref:`🔗` Возвращает интерфейс к объекту JavaScript, который может использоваться скриптами. ``interface`` должен быть допустимым свойством `` window`` JavaScript. Обратный вызов должен принимать один аргумент :ref:`Array`, который будет содержать аргументы ``arguments``. См. :ref:`JavaScriptObject` для использования. .. rst-class:: classref-item-separator ---- .. _class_JavaScriptBridge_method_is_js_buffer: .. rst-class:: classref-method :ref:`bool` **is_js_buffer**\ (\ javascript_object\: :ref:`JavaScriptObject`\ ) :ref:`🔗` Возвращает ``true``, если заданный ``javascript_object`` имеет тип `[code]ArrayBuffer[/code] `__, `[code]DataView[/code] `__ или один из многих `типизированных объектов массива `__. .. rst-class:: classref-item-separator ---- .. _class_JavaScriptBridge_method_js_buffer_to_packed_byte_array: .. rst-class:: classref-method :ref:`PackedByteArray` **js_buffer_to_packed_byte_array**\ (\ javascript_buffer\: :ref:`JavaScriptObject`\ ) :ref:`🔗` Возвращает копию содержимого ``javascript_buffer`` в виде :ref:`PackedByteArray`. См. также :ref:`is_js_buffer()`. .. rst-class:: classref-item-separator ---- .. _class_JavaScriptBridge_method_pwa_needs_update: .. rst-class:: classref-method :ref:`bool` **pwa_needs_update**\ (\ ) |const| :ref:`🔗` Возвращает ``true``, если новая версия прогрессивного веб-приложения ожидает активации. \ **Примечание:** Актуально только при экспорте в качестве прогрессивного веб-приложения. .. rst-class:: classref-item-separator ---- .. _class_JavaScriptBridge_method_pwa_update: .. rst-class:: classref-method :ref:`Error` **pwa_update**\ (\ ) :ref:`🔗` Выполняет обновление прогрессивного веб-приложения в реальном времени. Принудительно устанавливает новую версию и перезагружает страницу. \ **Примечание:** Ваше приложение будет **перезагружено во всех вкладках браузера**. \ **Примечание:** Актуально только при экспорте в качестве прогрессивного веб-приложения и :ref:`pwa_needs_update()` возвращает ``true``. .. |virtual| replace:: :abbr:`virtual (Этот метод обычно должен быть переопределен пользователем, чтобы иметь какой-либо эффект.)` .. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)` .. |const| replace:: :abbr:`const (Этот метод не имеет побочных эффектов. Он не изменяет ни одну из переменных-членов экземпляра.)` .. |vararg| replace:: :abbr:`vararg (Этот метод принимает любое количество аргументов после описанных здесь.)` .. |constructor| replace:: :abbr:`constructor (Этот метод используется для создания типа.)` .. |static| replace:: :abbr:`static (Этот метод не нуждается в вызове экземпляра, поэтому его можно вызвать напрямую, используя имя класса.)` .. |operator| replace:: :abbr:`operator (Этот метод описывает допустимый оператор для использования с этим типом в качестве левого операнда.)` .. |bitfield| replace:: :abbr:`BitField (Это значение является целым числом, составленным как битовая маска следующих флагов.)` .. |void| replace:: :abbr:`void (Нет возвращаемого значения.)`