HTMLにSVGを埋め込む
svg.html
<object id="svg-obj" data="/images/sample.svg" type="image/svg+xml"></object>
img
タグではなくobject
タグで表記する。
JavaScriptでSVG読み込み
svg.js
// SVGオブジェクト
var $svg;
// SVG読み込み
var loadSvgObject = function() {
if (!$svg) {
var svgTag = document.getElementById('svg-obj');
if (!svgTag) return;
var svgDoc = svgTag.contentDocument;
$svg = $(svgDoc).find('svg');
}
};
こんな感じで関数化する。
SVGファイルをちゃんと読み込んでいるか確認する場合は、
console.dir($svg);
とかデバッグで中身をチェック。
重要なのは、ちゃんとページ読み込み後に実行すること。
$(document).ready(function() {
// NG:読み込まれない!
loadSvgObject();
});
$(window).on('load', function() {
// OK
loadSvgObject();
//...処理
});
ただ、これだとブラウザの戻るボタンで戻った時にちゃんと読み込んでくれなかったりするから、
リロードするなり対策する。
以上。