如何在SVG中获取工作的动态javascript引用

如何在SVG中获取工作的动态javascript引用,javascript,dynamic,svg,Javascript,Dynamic,Svg,我试图做的是从HTML中的Javascript代码动态地在嵌入式SVG文档中设置Javascript脚本引用 我认为这就像在嵌入的SVG文档中的适当位置动态附加一个节点一样简单 我发现该节点实际上是在运行时添加的(可以使用Firefox Inspect元素进行检查),但引用中包含的Javascript代码在需要时不会执行 有人对此有想法吗?为了让SVG能够调用Javascript代码中的函数,还需要做些什么 下面是一个简化的场景: test.html(嵌入SVG) SVG元素必须在SVG名称空间

我试图做的是从HTML中的Javascript代码动态地在嵌入式SVG文档中设置Javascript脚本引用

我认为这就像在嵌入的SVG文档中的适当位置动态附加一个节点一样简单

我发现该节点实际上是在运行时添加的(可以使用Firefox Inspect元素进行检查),但引用中包含的Javascript代码在需要时不会执行

有人对此有想法吗?为了让SVG能够调用Javascript代码中的函数,还需要做些什么

下面是一个简化的场景:

test.html(嵌入SVG)


SVG元素必须在SVG名称空间中创建,该名称空间为
http://www.w3.org/2000/svg
因此,您必须对xlink属性使用CreateElements,而不是createElement,它必须位于xlink命名空间中,因此您需要

  var newref = svgdoc.contentDocument.createElementNS('http://www.w3.org/2000/svg', 'script');
  newref.setAttribute("type", "text/javascript");
  newref.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", "script.js");
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" width="12cm" height="12cm" xmlns:xlink="http://www.w3.org/1999/xlink">
<g style="fill-opacity:1; stroke:black; stroke-width:0.1cm;">
<circle cx="6cm" cy="2cm" r="100" style="fill:red;" transform="translate(0,50)" onclick="MyFunction()"/>
</g>
</svg>
function MyFunction() {
alert("I can execute script!");
}
  var newref = svgdoc.contentDocument.createElementNS('http://www.w3.org/2000/svg', 'script');
  newref.setAttribute("type", "text/javascript");
  newref.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", "script.js");