chrome getSVGDocument()不起作用/如何在chrome中的html文件中获取svg文件?

时间:2011-04-19 16:39:04

标签: google-chrome svg

Belows是代码。

或试试(暂时):http://ihome.ust.hk/~cs_lyfac/svgQuestion/a.html

当你点击输入它很好并且svgDocument对象被警告。但如果你刷新它,它是未定义的。为什么?而且,在本地模式下它总是未定义。

<html>
    <head>
        <title>Animating SVG</title>
        <script type="text/javascript" src="gear.js"></script>
    </head>
    <body bgcolor="#CCAAFF" onload="RotateSVG()">

        <object id="gear" data="gear.svg" type="image/svg+xml"
                width="500" height="500"
                style="position: absolute; top: -250px; left: -250px;">
        </object>

   </body>
</html>

function RotateSVG()
{

    var svgTag = document.getElementById("gear");
    var svgDoc = null;

    svgDoc = svgTag.getSVGDocument();
    alert(svgDoc);

}

<svg xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     version="1.1"
     baseProfile="full">
<!-- http://www.mozilla.org/projects/svg/ -->
  <g id="gearG" fill-opacity="0.7" stroke="black" stroke-width="0.1cm">
    <circle cx="6cm" cy="2cm" r="100" fill="red"
                    transform="translate(0,50)" />
    <circle cx="6cm" cy="2cm" r="100" fill="blue"
                    transform="translate(70,150)" />
    <circle cx="6cm" cy="2cm" r="100" fill="green"
                    transform="translate(-70,150)" />
  </g>
</svg>

1 个答案:

答案 0 :(得分:1)


我想我已经想通了。我应该将“onload”放在svg对象标签而不是body标签上。我想在这种情况下,可以在加载svg对象时定义svgDoc。

 <object onload="RotateSVG()" id="gear"...

试试这个(暂时):http://ihome.ust.hk/~cs_lyfac/svgQuestion2/a.html
然而firefox(4)在这两种情况下都能正常工作。