8

私は SVG を使い始めており、次のコードがあります。

HTML

<embed id="embed" src="svg.svg" type="image/svg+xml" width="400" height="300" >

<object id="object" data="svg.svg" type="image/svg+xml" width="400" height="300"></object>

Javascript

$(window).load(function (){
//alert("Document loaded, including graphics and embedded documents (like SVG)");

    var svgDoc_embed = document.getElementById("embed").getSVGDocument();
    alert("My svgDoc_embed => " + svgDoc_embed);

    var svgDoc_object = document.getElementById("object").getSVGDocument();
    alert("My svgDoc_object => " + svgDoc_object);  

});

FireFoxブラウザではうまく動作します

My svgDoc_embed => [object SVGDocument]
My svgDoc_object => [object SVGDocument]

ただし、Chrome ブラウザでは機能しません。

My svgDoc_embed => null
My svgDoc_object => null

インターネットを検索しましたが、機能するものが見つかりません

どんな提案でも大歓迎です

================================================== ========================

Chrome JS コンソールを開いて、次のように入力してみます。

document.getElementById ("object"). GetSVGDocument ();

結果はヌルです。

また、コードを次のように変更します。

$ ("embed"). load (function () {
svgDoc_embed var = document.getElementById ("embed"). getSVGDocument ();
alert ("My # embed svgDoc_embed =>" + svgDoc_embed);
});

  $ ("object"). load (function () {
  svgDoc_object var = document.getElementById ("object"). getSVGDocument ();
alert ("My # object svgDoc_object =>" + svgDoc_object);
  });

そして、何の結果も与えません。

どんな提案でも大歓迎です。

4

1 に答える 1

1

getSVGDocument() は推奨されておらず、私の FF のコピーでは機能しなかったと思います。代わりに firstElementChild を使用してみてください。

var svg = document.getElementById("object").firstElementChild;

または、次の方法で SVG 要素に直接アクセスします。

var svg = document.getElementById("foo");

ここで、「foo」はルート svg 要素の id 属性の値です。

<svg id="foo">
于 2013-05-20T18:57:02.990 に答える