日期:2014-05-16  浏览次数:20335 次

js 获取 SVGDocument 问题。
我要实现一个不改变页面以及svg文件的前提下,通过js动态加载svg,动态为svg添加事件,重构右键菜单等功能。
环境是IE+SvgViewer。

我的思路是在页面onload时给页面的某个层里动态添加一个<embed id="NavigateControl" name="svg" type="image/svg+xml" src="11.svg" width="100%" height="100%" >标签,然后操作svg文件,所有操作都是在页面onload时进行的。
然后问题就出来了
JScript code

        try {
            CurveControl = document.getElementById('NavigateControl');    //NavigateControl就是embed标签的id
            if(CurveControl==null)
                return;
            svgDoc = CurveControl.getSVGDocument();    //到这里就会出错了,提示没有当前方法。
            //得到了svgDoc之后我就可以对svg操作了。
        }
        catch(e) {
            alert(e);
        }



CurveControl.getSVGDocument()这个方法在<embed id="NavigateControl" name="svg" type="image/svg+xml" src="11.svg" width="100%" height="100%" >标签写死在页面中时就可以成功取得SVGDocument,可是在动态添加的情况下就不好用了,我应该怎么取得SVGDocument呢,或者我的思路不对?

------解决方案--------------------
CurveControl.src = '1.svg';
CurveControl.onload = function() {
.....

};

可能是svg还没load完,所以你取不到
------解决方案--------------------
参考:http://helius1214.javaeye.com/blog/619508
------解决方案--------------------
JScript code

<html>
<head>
<title>By Mr.Ms</title>
</head>
<body onload="load();"> //onload获取svgDoc,操作svg
  <div id="mainDiv"></div>
</body>
<script type="text/javascript">
//这里调用动态添加embed的方法
</script>
</html>