在SVG中添加了Javascript,但是不能在JSVGCanvas中运行。

我要做的是在svg中更换图片,添加了JS在svg中。
在浏览器上能够很好的运行,但是在蜡染的JSVGCanvas中却没有反应。
有没有办法解决这个问题呢?
先谢谢了!

Dead_Knight
Dead_Knight 试了下你这个svg,在chrom下打开,并没有你说的更换图片效果啊?怎么操作的?不然没法帮你调试
7 年多之前 回复
Dead_Knight
Dead_Knight 把你的svg文件发给我,我帮你调试下
7 年多之前 回复

1个回答

帮你解决了这个问题,因为在浏览器中使用javascript操作svg的元素没有那么规范,而batik操作svg元素需要严格按照w3c的svg规范,所以svg文件中的方法需要改为:
[code="java"]
function dragOn(spath){
var imgView = document.getElementById("imgView");
imgView.setAttributeNS( "http://www.w3.org/1999/xlink", "href", spath );
}
[/code]
我已经测试过,具体可参考:
[url]http://www.w3.org/Graphics/SVG/WG/wiki/Href[/url]
下面这些方式中,就最后两个是Correct正确的。
[code="java"]
el.setAttribute( "href", "foo.png" );
el.setAttribute( "xlink:href", "foo.png" );
el.setAttributeNS( "xlink:href", "foo.png" );
el.setAttributeNS( "xlink", "href", "foo.png" );
el.setAttributeNS( xlink, "href", "foo.png" ); (where there is no JS variable called "xlink")
el.setAttributeNS( "http://www.w3.org/1999/xlink", "href", "foo.png" ); (Correct)
var xlinkns = "http://www.w3.org/1999/xlink"; el.setAttributeNS( xlinkns, "href", "foo.png" ); (Correct)

[/code]

Canueman
外面在下雷 看来还是要熟悉一下w3c的规范才行,再次感谢
7 年多之前 回复
Dead_Knight
Dead_Knight 以后写svg时,一定要按照w3c的规范来写,因为batik是严格按照规范来处理的。它的底层解析是通过w3c的dom规范来的。
7 年多之前 回复
Canueman
外面在下雷 太感谢你了,已经可以用了,高手啊,我搞了半天原来是这个问题。
7 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐