2010-06-10 2 views
1

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

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

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

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

С уважением Christian

ответ

2

объявление OnClick = "replaceLink ('yourdata')" в формате SVG-объекта, в котором вы хотите запустить эту функцию, определить эту функцию в СВГ с:

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

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

4

Фокус в том, что SVG является дочерним по отношению к «окну», не являющемуся дочерним элементом «window.document», как и большинство вещей. Если у вас есть сценарий в SVG, вы получаете доступ к вещам в вашем документе, используя

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

Если у вас есть сценарий в <head> или <body> теге вашего документа, вы получаете доступ материала в SVG с помощью соответствующей конвенции как

window.theIDofYourSVG.childNodes[theNumberOfTheThingInYourSVG] 
+0

Я попытался запустить второй абзац «у вас есть сценарий в теге головы или тела вашего документа» –