Основная причина, по которой ваш код может перестать работать — это обновления редактора. Их не избежать, иначе мы остановимся в развитии.
Если вы используете недокументированные возможности, ваш код переживет несколько обновлений, а потом может непредсказуемо сломаться. Возможно, никаких проблем не будет, но мы не можем этого гарантировать.
Содержание
Чем меньше недокументированных возможностей используется, тем надежнее код.
cr.api
, вот так:cr.api(function (page) {
// Тут ваш код
});
page.lazy
при работе с DOM-элементами.cr-
.Весь смысл API в том, чтобы код не зависел от обновлений редактора. Мы следим за тем, чтобы из версии в версию все возможности API продолжали работать без изменений.
Старайтесь решить задачу с использованием API. Если не хватает возможностей - пишите в чат в телеграме. По истории переписки в чате вы можете увидеть, что недостающий функционал мы добавляем очень оперативно.
cr.api
Даже если вы не используете JS API, мы рекомендуем код оборачивать в блок cr.api
.
Используя jQuery, многие разработчики привыкли использовать подобную конструкцию:
$(document).ready(function () {
// Тут код, использующий jQuery
});
На Creatium вместо нее следует использовать следующую
cr.api(function (page) {
// Тут код, даже если он не использует JS API и jQuery.
});
В этом есть несколько преимуществ:
page.lazy
Это простая и удобная функция, которая позволяет избежать многих ошибок при обращении к DOM-элементам.
Представьте, что вы написали код, который что-то делает с элементом, с помощью jQuery:
cr.api(function (page) {
var $element = $('.my-element');
});
Он может сломаться, если элемент поместить в окно, потому что окна появляются в DOM страницы не при загрузке, а перед первым открытием окна. Следовательно, jQuery ничего не найдет, и код не выполнится. А учитывая то, как работает jQuery, в консоли может даже не быть ошибки!
Помимо окон есть так же всплывающие панели, слайдеры и вкладки, содержимое которых может загружаться с задержкой, чтобы ускорить открытие страницы.
Просто используйте функцию page.lazy
и не беспокойтесь обо всем этом.
cr.api(function (page) {
page.lazy('.my-element', function (el) {
var $element = $(el);
});
});
Можно так же использовать функцию page.waitForAppear
, которая похожим образом, но срабатывает чуть раньше, чем page.lazy
. Она тоже безопасна.
Любой класс или атрибут элемента может измениться в обновлении.
Например, у нас есть компонент форма с классом widget-form2
. В какой-то момент она может стать просто widget-form
. Вероятно, будет изменен класс widget-imagedtext
на что-нибудь более подходящее по смыслу.
Еще раньше у нас заголовки были отдельным компонентом с классом widget-header
, а потом были объединены с текстовым компонентом и стали тоже widget-text
.
В одном из обновлений мы полностью переписали окна, и в них вообще все классы поменялись.
Таких примеров много. Поэтому мы предлагаем использовать или свои классы (добавлять их в настройках компонентов), или использовать классы, начинающиеся с cr-
.
Примеры таких безопасных классов среди компонентов:
cr-slider
cr-button
cr-spoiler
cr-field
и cr-field-input
Использовать их можно, не опасаясь, что они будут удалены или изменены.
На текущий момент мы используем jQuery 3.4.1 и Lodash 2.4.1.
Мы даем возможность использовать эти библиотеки, поскольку сами их используем. Но раз в несколько лет мы обновляем их версии, и это может привести к непредсказуемым проблемам.
Использование этих библиотек — на свой страх и риск.
ПОЛЕЗНЫЕ ССЫЛКИ
ТЕХНИЧЕСКАЯ ПОДДЕРЖКА
Напишите нам. на связи 24/7. Среднее время ожидания ответа: 10-15 минут. Также вы можете вступить в наш Телеграм-чат, где собралось много специалистов и пользователей.
Агенты ответят через 10 минут