Стартовая страница › Форумы › Понять, как работает ПО › Мнемосхемы › Разметка — работа скриптов внутри SVG
- В этой теме 22 ответа, 2 участника, последнее обновление 2 недели, 6 дней назад сделано
manjey73.
-
АвторЗаписи
-
12.06.2026 в 23:53 #43887
manjey73УчастникНи в Разметке на мнемосхеме, ни внутри фейсплейта не работают скрипты внутри svg
Вообще возможно запустит скрипт в Разметке, обрамленный <script>
А так же <script>//<![CDATA[? и если возможно, то что для этого надо сделать ?
-
Тема изменена 2 недели, 6 дней назад пользователем
Mikhail.
14.06.2026 в 00:07 #43888
manjey73Участникпоставим вопросы иначе, раз скрипты внутри svg не хотят работать
1. как из скрипта faceplate узнать его ширину и высоту на мнемосхеме. (даже больше, из скрипта компонента, установленного на faceplate)
2. как ограничить размер по высоте и ширине минимально заданной? чтобы нельзя было сжать меньше указанных?-
Ответ изменён 3 недели, 4 дня назад пользователем
manjey73.
15.06.2026 в 11:18 #43892
manjey73УчастникПо поводу ширины и высоты вроде нашел.
Пункт 2 надо как-то понять как сделать. Чтобы на мнемосхеме, уменьшая компонент faceplate с Разметкой внутри, поставить ограничение на ширину и высоту, меньше которых оно не сожмется.15.06.2026 в 11:32 #43893
manjey73УчастникСуть, при помощи min-width мы ограничиваем ширину элемента, сама картинка у меня перестает сжиматься. Но вот зеленая окантовка так же уменьшается до минимума 15 пикселей при действии мышкой.
То есть в стили фейсплейта я добавил еще один параметр min-width
.fp-heatexchanger { width: 100% !important; height: 100% !important; min-width: 100px; }15.06.2026 в 14:43 #43894
manjey73УчастникВ скриптах не работает такая комбинация
args.component.dom.find('#${idPrefix}sym1').append('<line id="${idPrefix}ln1" x1="0" y1="50%" x2="${ln1x2}" y2="50%" stroke="black" stroke-width="2" />');То есть линию то оно пытается добавлять, и это есть, если посмотреть код элемента.
Но отрисовки линии нет никакой, при изменении размеров тоже реакции на скрипты нет.sym1 здесь id группы <g> в svg, чтобы линия попадала куда надо.
Что в скрипте надо сделать, чтобы это отрисовалось?
Если же линию прописать изначально, и целой кучей строк менять ее атрибуты, то работать будет.
заменил внутри строки апострофы, чтобы правильно в CODE обернулось….15.06.2026 в 15:50 #43897
manjey73УчастникКак заставить выполняться скрипт при Resize компонента?
То есть Разметка, вставлена в фейсплейт, скрипт внутри Разметки.
На мнемосхеме выполняю изменение размера фейсплейта. Нужно, чтобы отрабатывал скрипт
domCreated, Updated….а то фигня получается. Меняешь Размер, потом должен сохранить, потом обновить, чтобы запустились скрипты
15.06.2026 в 16:31 #43898
manjey73УчастникИ если обновить страницу, то получаем нет данных по размерам ширины, высоты и переменной от формулы расчета.
15.06.2026 в 16:38 #43899
manjey73Участника, и на мнемосхеме это в принципе не работает. Облом-с номер 2, только в Редакторе и можно посмотреть к сожалению.
Думал хоть на мнемосхеме будет работать 🙁15.06.2026 в 17:33 #43900
manjey73Участник🙁 в общем лажа лажовая.
1. При редактировани faceplate скрипты отключены, не видишь и не понимаешь что есть правильно, а что нет.
2. При ресайзе и обновлении страницы скрипты не отрабатывают, а нужно получать размеры родителя и это должно работать — так что 1-й вопрос остался в силе.Все это связано с тем, что применить стили CSS и расчет необходимых точек при помощи calc() невозможно в принципе.
Ну по крайней мере к <line> и <path> в svg. Возможно еще к чему-то, пока уперся в эти две вещи. Возможно либо менять атрибуты, что частично работает. Либо создавать скриптом <line> и <path>, что не работает вообще.
15.06.2026 в 17:40 #43904
manjey73УчастникError: <line> attribute x2: Expected length, "NaN". attr @ jquery.min.js:2 VM206:21 Ширина undefined высота undefined ln1x2 NaNэто при загрузке мнемосхемы с данным FP.
Примитивный fp, где пытаюсь менять атрибуты линии TestLine.fp
15.06.2026 в 17:45 #43906
MikhailМодератор1. как из скрипта faceplate узнать его ширину и высоту на мнемосхеме. (даже больше, из скрипта компонента, установленного на faceplate)
С помощью jQuery или методами JavaScript для работы с DOM.
Но вот зеленая окантовка так же уменьшается до минимума 15 пикселей при действии мышкой.
Редактор не анализирует минимальный размер элемента. Это было бы полезно добавить. Записал пожелание.
15.06.2026 в 17:51 #43911
manjey73УчастникС помощью jQuery или методами JavaScript для работы с DOM.
так вот либо это хромает, либо я не тот способ применяю, что перестает работать при обновлении страницы.
Я использовал
const wwidth = $('#${idPrefix}heatex').width();(обратные апострофы так же заменил на простые для работы CODE)
heatex здесь id вставленного SVG. Можете попробовать, скачав TestLine.fp
Скорее всего нужно получать ширину и высоту родителя, а не вставленного кода svg. Но я не знаю как это делать для фейсплейта.
-
Ответ изменён 3 недели, 3 дня назад пользователем
manjey73.
15.06.2026 в 22:16 #43918
manjey73Участникargs.component.dom.createElementNS is not a functionили методами JavaScript для работы с DOM
Вот нифига не понимаю, как чистый javascript применять к обертке jQuery.
Сколько не пытался, получал всегда ошибки разного рода.15.06.2026 в 22:23 #43919
manjey73УчастникПочему это работает без createElementNS?
Раньше (во времена старых браузеров) jQuery при создании элементов через строку
($(‘<line>’)) помещал их в пространство имен HTML, и SVG-линии не отображались.
Сейчас все современные браузеры (Chrome, Firefox, Safari, Edge) автоматически распознают, что тег <line> находится внутри <svg>,
и корректно применяют к нему SVG-пространство имен даже при вставке через обычную строку jQuery.а вот нифига не работает такой метод, при этом строка добавляется, но при этом не отображается никак.
-
Ответ изменён 3 недели, 2 дня назад пользователем
manjey73.
16.06.2026 в 06:07 #43921
manjey73УчастникПотому что браузеры продолжают не распознавать 🤣
-
Тема изменена 2 недели, 6 дней назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.