манипулировать объектами вне svg с помощью функции javascript внутри svg - PullRequest
1 голос
/ 11 июня 2010

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

Позвольте мне уточнить: у меня есть карта мира в svg, я хочу нажать на страну, и этот щелчок должен выполнить ajax-вызов и загрузить соответствующую информацию об этой стране в div вhtml-сайт, где внедрен svg.

"onclick =" location.href = 'xxx' "" перенаправляет на соответствующий сайт, что нормально, но я бы предпочел запустить js-функцию, которая выбираетсайт с ajax - но запуск javascript-функции в svg, кажется, работает только для функций и элементов, определенных в svg, а не вне его.

Возможно ли в принципе манипулировать чем-либо вне svg через js-функция в SVG?Как?

С уважением Кристиан

Ответы [ 2 ]

4 голосов
/ 19 ноября 2011

Хитрость в том, что SVG является дочерним элементом "окна", а не дочерним элементом "window.document", как и большинство других вещей. Если у вас есть скрипт в SVG, вы получаете доступ к содержимому документа, используя

this.parent.document.getElementById("theIDYouWant")

Если у вас есть скрипт в теге <head> или <body> вашего документа, вы получаете доступ к материалам SVG, используя соглашение, подобное

window.theIDofYourSVG.childNodes[theNumberOfTheThingInYourSVG]
2 голосов
/ 11 июня 2010

ad onclick = "replaceLink ('yourdata')" для svg-объекта, с которого вы хотите запустить эту функцию, определите эту функцию в svg с помощью:

function replaceLink(data)
    {
        parent.replaceLinkinHTML(data);
    };

и добавьте функцию replaceLinkinHTML в html, куда встраивается svg, и вы можете легко манипулировать html-страницей из svg ...

...