2012-09-26 2 views
1

Я реализую индивидуальную версию SVG-edit для проекта, который должен иметь возможность редактировать очень простые файлы SVG. Требование состоит в том, чтобы текст в этих файлах SVG редактировался, но не изображения.Выполнение элементов SVG readonly

Итак, общий пример одного из этих файлов будет иметь текстовый элемент вверху и элемент изображения ниже этого. Есть ли какой-либо атрибут, который я могу добавить к элементу изображения, и, следовательно, любую конфигурацию, которую я могу создать в самом редакторе javascript, чтобы пользователь не вносил изменений в элемент изображения?

(Очевидно, что я могу достичь этого без использования SVG-редактирования. Т.е. просто имеет TextBox для ввода пользователя и заменяет текстовый элемент на SVG своим значением, но это уродливо.)

Любой помощь очень ценится ..

ответ

3

Для SVG Edit весь ваш SVG DOM редактируется, и даже если есть атрибут, такие как readonly SVG Edit будет игнорировать его, если вы не реализовали себя.

У меня есть свой собственный implementation of SVG Edit тоже, и мне довелось встретить аналогичный прецедент, как ваш собственный. Я сделал скрытую панель слоев и разместил редактируемый контент на самом верхнем слое. Таким образом, пользователи не имеют доступа к нижележащим слоям. Вы должны изменить ваши SVG файлы искать что-то вроде этого ...

<svg xmlns="http://www.w3.org/2000/svg"> 
    <g> 
     <title>Layer 1</title> 
     <!-- NON EDITABLE CONTENT --> 
    </g> 
    <g> 
     <title>Layer 2</title> 
     <!-- YOUR TEXT ELEMENTS --> 
    <g> 
</svg> 

Тогда вы просто скрыть панель слоев с некоторыми CSS

#svg_editor #sidepanels { 
    display: none; 
} 

http://tinyurl.com/9q9s7d9

(URL ссылки на ствол сборки SVG Edit, но он сокращен, потому что он загружает кодированную строку SVG)

+0

Спасибо! Отлично. Я собираюсь продолжать возиться, но знаете ли вы, что по умолчанию вы используете первый уровень (т.е. редактируемый)? – user982119

+0

Вы можете программно управлять текущим уровнем 'svgCanvas.setCurrentLayer ('Layer 1')' – Duopixel

+0

@Duopixel большой поклонник вашей работы, поддерживайте его – rickyduck

Смежные вопросы