我正在尝试向JS中的SVG元素添加xlink:href
属性,但它无效。
这是我的代码:
的test.html:
<html>
<head>
<script type="text/javascript" src="test.js"></script>
</head>
<body onload=setupSvgLink()>
<object id="test-svg" type="image/svg+xml" data="test.svg" />
</body>
</html>
test.js:
function setupSvgLink() {
var svg = document.getElementById("test-svg").contentDocument;
var waldo = svg.getElementById("waldo");
waldo.setAttribute("xlink:href", "waldo.html");
}
test.svg:
<?xml version="1.0" standalone="no"?>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" height="80">
<a id="waldo"><rect x="10" y="10" width="60" height="60" fill="blue"/></a>
</svg>
我正在使用Firefox 20进行测试。我加载test.html
,但矩形上没有链接。我已经在Firefox Developer Tools的Inspector中检查过xlink:href属性确实出现在元素上,但是没有链接。
如果我将xlink:href属性添加到SVG文件而不是通过JS进行,它可以正常工作。
我做错了什么?
答案 0 :(得分:1)
在处理SVG时,您通常需要使用element.setAttributeNS
,更改您的功能......
function setupSvgLink() {
var xlinkns="http://www.w3.org/1999/xlink";
var svg = document.getElementById("test-svg").contentDocument;
var waldo = svg.getElementById("waldo");
waldo.setAttributeNS(xlinkns, "href", "waldo.html");
}