Способ доступа к SVG зависит от того, как именно вы включите его в свою страницу. Вы можете либо использовать элемент object
или embed
и ссылку на SVG, либо включить его на странице. Обратите внимание, что включение его через элемент img
не будет работать - SVG будет рассматриваться как «черный ящик» изображения, вы не сможете получить доступ к внутренней структуре.
Встраивание через объект является простым и будет работать во всех браузерах, которые поддерживают SVG:
<object id="svg_object" width="672" height="243" data="myimage.svg" type="image/svg+xml">
No SVG support
</object>
Затем, чтобы получить внутреннюю структуру, вам нужно получить contentDocument
:
var svg = $('svg_object').contentDocument;
var svgel = svg.getElementById('myid');
Обратите внимание, что внутренний DOM SVG не будет автоматически расширяться при помощи prototype.js в этом случае, поэтому вам придется использовать обычные методы DOM.
Внедрение SVG непосредственно в страницу будет работать, если вы обслуживаете свою страницу как application/xhtml+xml
или если браузер имеет парсер, совместимый с HTML5 (Firefox 4, Chrome, IE9, но не Opera или более ранний Firefox). Однако теперь ваши методы prototype.js будут работать напрямую с элементами SVG, что делает некоторые вещи намного проще:
var svgel = $('myid');
Я сделал несколько примеров: object , inline . Они работают для меня в Firefox 4, вам, возможно, придется немного поработать, чтобы заставить их работать в других браузерах (с оговорками, упомянутыми выше, что касается поддержки).