如何在SVG中获得动态javascript引用
How to get a working dynamic javascript reference in an SVG
我想做的是从HTML中的Javascript代码动态地设置嵌入SVG文档中的Javascript脚本引用。
我认为这就像动态地将节点附加到嵌入的SVG文档中的适当位置一样简单。
我发现节点实际上是在运行时添加的(可以用Firefox Inspect Element检查这一点),但是引用中包含的Javascript代码在需要时没有执行。
有人知道这个吗?还需要做什么才能使SVG能够调用Javascript代码中的函数吗?
下面是一个简化的场景:
test.html(嵌入SVG)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">
function ActivateScript() {
var svgdoc = document.getElementById("svg");
var newref = svgdoc.contentDocument.createElement('script');
newref.setAttribute("type", "text/javascript");
newref.setAttribute("xlink:href", "script.js");
svgdoc.contentDocument.documentElement.appendChild(newref);
}
</script>
</head>
<body>
<input type="button" value="Activate script" onclick="ActivateScript()" />
<object id="svg" type="image/svg+xml" data="embed.svg"/>
</body>
</html>
embed.svg
<?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>
最后是外部Javascript,我试图动态分配(script.js)
function MyFunction() {
alert("I can execute script!");
}
SVG元素必须在SVG命名空间http://www.w3.org/2000/svg
中创建所以不是createElement而是使用createElementNS类似的xlink属性也必须放在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");
相关文章:
- 动态Javascript表单不起作用
- 从脚本中的动态(javascript)网页获取信息
- 创建动态javascript对象
- HTML 5 帮助.使用websql数据库中的动态javascript渲染选项
- 更改动态 JavaScript 数据
- 将动态javascript变量附加到HTML标记.InnerHTML&insertAdjacentHTML都不正
- addEvenListener不'我不研究动态javascript
- 使用加载时的Codeigner动态javascript->看法
- JSON动态Javascript解析”;未定义”;
- jsf应用程序中的动态javascript
- UpdatePanel中自定义控件内的动态javascript
- 使用wro4j创建动态javascript捆绑包
- 如何在PHP中包含动态Javascript页面的静态HTML结果
- 动态JavaScript与rail一起徘徊
- 在 Symfony 2 中生成动态 JavaScript 的正确方法
- For 循环中的动态 Javascript 条件
- 如何确定调用动态 JavaScript 文件的页面和 ASP.net 中的用户
- 是否可以缓存具有指向动态JavaScript的链接的HTML页面
- 动态 javascript,用于检测复选框是否被选中并禁用相应的输入字段
- 如何制作具有键和值组的动态JavaScript数组