質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SVG

SVGは、XMLを基盤とした2Dベクター画像記述言語。画像を線・面といった図形の集合体として扱うベクター画像のため、環境に適した表示が可能です。アニメーション機能もサポートされており、簡単なインタラクティブコンテンツ作成もできます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

4494閲覧

Javascriptを埋め込んだSVGファイル内から外部のjavascriptを読み込む方法について

nanana71

総合スコア8

SVG

SVGは、XMLを基盤とした2Dベクター画像記述言語。画像を線・面といった図形の集合体として扱うベクター画像のため、環境に適した表示が可能です。アニメーション機能もサポートされており、簡単なインタラクティブコンテンツ作成もできます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2018/03/13 05:20

前提・実現したいこと

Javascriptを埋め込んだSVGファイルを作成しています。
SVGを描画するためのJavascriptライブラリがあるということで、調査を行なっているのですが、
これらのライブラリをSVGファイル内から呼び出すにはどのように記述すればよいでしょうか?

サンプル等を見るとhtmlファイルのhead部でライブラリの読み込みを行い、
SVGファイルを参照するorインラインでSVGを記述するようになっているのですが、
今回はhtmlファイルを使用せず、SVGファイル単体で動作することを希望しています。

html

1<head> 2 <meta http-equiv="Content-Type" charset="UTF-8"> 3 <script src="js/d3.v3.min.js" charset="utf-8"></script> 4</head> 5<body> 6 <svg> 7 <!-- インライン --> 8 </svg> 9 <!-- 参照 --> 10 <object type="image/svg+xml" data="hoge.svg"></object> 11</body>

該当のソースコード

棒グラフを描画するSVGファイル(hoge.svg)

<?xml version="1.0" encoding="utf-8"?> <svg id="master-artboard" viewBox="0 0 1400 980" version="1.1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" style="enable-background:new 0 0 336 235.2;" width="1400px" height="980px"> <g transform="matrix(3.919999047851853, 0, 0, 3.919999047851853, 320.1520572900305, -1553.691558040917)"> <g id="g-1" transform="matrix(1, 0, 0, 1, 1.8474111129762605e-12, 4.618527782440651e-13)"> <g id="g-1"> <path d="M 34.400002 546.5 H 49.200002 V 565.000024 H 34.400002 V 557.900024 Z" class="st24" style="fill: rgb(170, 46, 41);"/> </g> <g id="g-2"> <path d="M 62 523.5 H 76.8 V 565.000024 H 62 V 557.900024 Z" class="st5" style="fill: rgb(239, 73, 57);"/> </g> <g id="g-3"> <path d="M 89.5 512.099976 H 104.3 V 565.000024 H 89.5 V 557.900024 Z" class="st8" style="fill: rgb(240, 95, 48);"/> </g> </g> </g> <script type="text/javascript"> // j3等を使用してグラフの描画を行なう </script> </svg>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

SVG文書から外部のJavaScriptファイルを読み込むにはscript要素のxlink:href属性を用います.

XML

1<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 2 <!--外部ライブラリの読み込み--> 3 <script xlink:href="some.js"/> 4 <script> 5<![CDATA[ 6//ライブラリを使ったコード 7//NOTE:SVGでは(XMLをベースとするため)CDATAセクションは必須です! 8]]> 9 </script> 10</svg>

が, 殆どのJavaScriptライブラリはHTML文書から読み込まれる(HTMLDocumentでの動作)ことを前提に作られているため, SVG文書から読み込む(SVGDocument環境)場合は慎重に動作検証を行う必要があります.


今回はhtmlファイルを使用せず、SVGファイル単体で動作することを希望しています。

SVGファイル単体での動作のメリットは「img要素で読み込むことが出来る」程度のものであり, スクリプトを実行しうる環境(iframe/object要素から読み込むケース等)においてはHTMLをベースとしようが, SVGをベースとしようが使い勝手にほとんど差は出ません.

投稿2018/03/13 06:06

defghi1977

総合スコア4756

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

w3.org - 15.2 The 'script' element

この辺の説明とサンプルコードが参考になるかと思います。

投稿2018/03/13 05:47

編集2018/03/13 05:52
HayatoKamono

総合スコア2415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問