Каков наилучший способ получить координаты svg, встроенного в html-файл?

Я встроил svg в html-файл следующим образом:

    <embed src="mysvg.svg" type="image/svg+xml" />

в файле svg есть прямоугольник с идентификатором «lot1a», есть ли способ получить координаты lot1a, сохранить его в переменной и использовать в качестве координат для другого файла svg. Моя главная проблема заключается в том, что, как сказал Phrogz, хост-HTML (или SVG) не может получить доступ к DOM встроенного файла. Так что я могу сделать?


person Lendl Leyba    schedule 30.11.2011    source источник
comment
Какой доступ вы хотите иметь? Что вы пытаетесь достичь? Визуально показать файл SVG как часть веб-страницы и управлять им с помощью JavaScript? Нужно ли сохранять изменения? Является ли проблемой встраивание данных SVG в HTML-страницу?   -  person Phrogz    schedule 30.11.2011
comment
Вы думаете, что пробовали это раньше или пробовали? Пожалуйста, покажите нам код, который вы пробовали.   -  person robertc    schedule 02.12.2011
comment
Когда вы говорите «получить координаты», вы хотите получить позицию относительно элемента HTML? Или вы хотите вставить что-то в то же место в SVG? Вы понимаете, что SVG — это масштабируемая векторная графика, координаты изображения SVG не отображаются напрямую в пиксели, как это делают координаты HTML.   -  person robertc    schedule 03.12.2011


Ответы (1)


Это должно работать (по крайней мере, в Firefox и Opera):

window.onload = function () {
    var svgel = document.getElementById('myembed');
    var svg;
    if (typeof svgel.getSVGDocument !== 'undefined') {
        svg = svgel.getSVGDocument();
    } else {
        svg = svgel.contentDocument;
    }
    var rect = svg.getElementById('lot1a');
    window.alert('x:' + rect.getAttribute('x') + ' y:' + rect.getAttribute('y'));
}

В Chrome есть ошибка, но вы можете попробуйте эти обходные пути.

person robertc    schedule 03.12.2011
comment
Но что, если код прямоугольника: ‹path d=M150 0 L75 200 L225 200 Z /› какие атрибуты x и y он получит? это потому, что я использовал иллюстратор, чтобы нарисовать svg. - person Lendl Leyba; 04.12.2011
comment
@LeiLeyba Вы не получите никаких атрибутов x или y, потому что ни один из этих атрибутов не существует. Если вы хотите проанализировать путь, используйте код, предоставленный для ответа на ваш предыдущий вопрос. - person robertc; 04.12.2011