Стартовая страница › Форумы › Понять, как работает ПО › Мнемосхемы › Mimic — скрипты для SVG
- В этой теме 93 ответа, 2 участника, последнее обновление 3 месяца назад сделано
Mikhail.
-
АвторСообщения
-
11.03.2026 в 15:01 #42399
manjey73УчастникУже использовал, он запускается, но вот он не находит svg в dom. То есть он запускается раньше, чем что-то там где-то там появляется 🙂
11.03.2026 в 16:01 #42401
manjey73Участникто есть суть.
код в domUpdated(args)
const fon1 = args.component.properties.fon;
args.component.dom.find(«#bodyvn-10»).attr(«fill», fon1);Работает.
Этот же код в domCreated — Не работает, хотя там же console.log работает11.03.2026 в 16:45 #42403
manjey73УчастникИ кстати, смог поменять id именно в domUpdated
args.component.dom.find("#bodyvn-10").attr("id", "Новый ID");так что вот посмотрите, когда именно отрабатывает domCreated и почему он не видит данных. Поэтому ничего и не меняется.
11.03.2026 в 17:18 #42405
MikhailМодераторdomCreated — создание DOM-модели компонента. Данных там и не должно быть.
11.03.2026 в 20:12 #42406
manjey73УчастникХм, тогда я не очень понимаю принцип.
Написано в ОсобенностяхdomCreated(args) — Вызывается один раз сразу после создания DOM схемы или компонента. Для фейсплейта вызывается после вызова аналогичных методов входящих в него компонентов.
То есть указано по моей логике — сперва создается схема, потом вызывается скрипт.
А вы говорите, что скрипт создает DOM модели компонентов.
11.03.2026 в 20:13 #42407
manjey73УчастникСразу ПОСЛЕ создания DOM в моем понимании тело компонента должно быть уже в DOMе, когда вызывается скрипт и он должен все находить.
11.03.2026 в 20:16 #42408
manjey73УчастникТут может что-то с ExtraMarkup? например я выводил id компонента из domCreated, все правильно вывел по номеру.
args.component.id так понимаю после создания получаем.
11.03.2026 в 20:19 #42409
manjey73УчастникИли например ошибка в расширенных компонентах схем ? Что сперва скрипт отрабатывает, а только потом расширенные компоненты добавляют в ДОМ компонент ?
11.03.2026 в 21:58 #42411
manjey73УчастникВот, в ExtraMarkup прописал скрипт
class extends ComponentScript { domCreated(args) { console.log("DOM created for component " + args.component.id); } }в логе тишина полная.
-
Ответ изменён 3 месяца, 2 недели назад пользователем
manjey73.
11.03.2026 в 22:06 #42413
manjey73УчастникПроблема в Faceplate, если на схему поставить просто ExtraMarkup и прописать скрипт выше, то получим
DOM created for component 56то есть его id.Все то же самое, но внутри фейсплейта уже не работает
11.03.2026 в 22:43 #42414
manjey73Участникdocument.querySelectorAll('use[xlink\\:href*="#' + oldId + '"]').forEach(el => { el.setAttribute('xlink\\:href', el.getAttribute('xlink\\:href').replace(oldId, newId));document.querySelectorAll — собственно для скриптов что будет заменой ?
12.03.2026 в 15:17 #42435
MikhailМодераторПодготовлю пример фейсплейта для работы с SVG, выложу его, напишу в эту тему.
12.03.2026 в 15:59 #42437
manjey73УчастникСейчас интересует 2 вопроса:
1. Это действительно ошибка, почему в faceplate не работает скрипт domCreated а в отдельно вставленном ExtraMarkup на схему прекрасно работает? мой скрипт прекрасно поменял все id
2. как пользоваться такими вещами, как document.querySelectorAll, document.getElementById ? так понимаю document надо заменить на что-то типа args.component.XXXXXX ? или это не будет работать и типа даже не пытайтесь?12.03.2026 в 17:48 #42443
manjey73УчастникДа, еще нюанс, domUpdated в фейсплейте работает постоянно, даже если я ничего не делаю 🙂
он же в ExtraMarkup на главной схеме не работает и что с ним делать мне непонятно, там же нет тогда экспортируемых свойств13.03.2026 в 13:51 #42450
MikhailМодератор1. В фейсплейте SunComponent.fp метод domCreated вызывается, судя по выводу в консоль.
domUpdated не вызывается постоянно на примере того же компонента. Если это не так, нужно искать ошибку в скриптах.
2. Это стандартные функции JavaScript. По доступна официальная документация.
args.component.dom — это объект jQuery. С ним удобнее работать методами jQuery, как показано в примере. -
Ответ изменён 3 месяца, 2 недели назад пользователем
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.