JavaScript,jQuery,SVG初心者です
こちらのサイトを参考に作ってみましたが、どうにも後にもうまく行かず。
svgが別ドメインにあると根本的に動かなそうだったのでHTMLとSVGの所在は同一ドメイン上になります。
参考SVGファイル
html
1<object id="svg_map" data="https://example.com/panda.svg" type="image/svg+xml"></object> 2 3<script> 4 $(function(){ 5 var svg_map = document.getElementById('svg_map'); //.contentDocument, 6 var $svg_map = $(svg_map.contentDocument); 7 console.log([svg_map, svg_map.contentDocument, $svg_map]); 8 }); 9</script>
不慣れなChromeDeveloperツールをつかって原因を探ってみたところ
① svg_map
正しく読み込まれていると推測。
ツリーのcontentDocument配下には、
URL: https://example.com/panda.svg
contentType: "image/svg+xml"
doctype: <!DOCTYPE svg>
all: HTMLAllCollection(13) [svg, g#white, g, path, path, g#black, path, p...
などなど、いい感じでSVGの中身を取得出来ている模様。
ところが
② svg_map.contentDocument
URL: "about:blank"
contentType: "text/html"
doctype: null
all: HTMLAllCollection(3) [html, head, body]
③ $svg_map
親階層0:の下に②がぶら下がっている
0: document
▶この下に②がぶら下がっている
length: 1
__proto__: Object(0)
という形になり、なぜか①と②が違う結果になってしまい
当然、jQueryで操作なども出来ないです。
javascript
1document.getElementById('svg_map').contentDocument;
と
javascript
1svg_map = document.getElementById('svg_map'); 2svg_map.contentDocument;
は意味が違うのでしょうか?
また、
javascript
1$(function(){ 2 var svg_map = document.getElementById('svg_map').contentDocument; 3 var $svg_map = $(svg_map); 4 console.log([svg_map, /*svg_map.contentDocument,*/ $svg_map]); 5});
としても$svg_mapはSVGを取得することが出来ません
おわかりになりましたらご教授お願い致します。
回答1件
あなたの回答
tips
プレビュー