ブラウザでSVGを表示するSIEの開発 (SIE - to display SVG on legacy browsers)
| リビジョン | 0b216413dbf8166d44888b68afecbc49d3185de8 (tree) |
|---|---|
| 日時 | 2015-12-02 22:38:20 |
| 作者 | dhrname <dhrname@user...> |
| コミッター | dhrname |
Support calling from the SVG Document
| @@ -1419,8 +1419,21 @@ function getDocument() | ||
| 1419 | 1419 | svgns = "http://www.w3.org/2000/svg"; |
| 1420 | 1420 | if (svg) { |
| 1421 | 1421 | for (var i=0;i<svg.length;++i) { |
| 1422 | - var svgDoc = svg[i].getSVGDocument(), | |
| 1423 | - $set = base("$calcMode").$attribute.$setElement; | |
| 1422 | + getElement( svg[i].getSVGDocument() ); | |
| 1423 | + } | |
| 1424 | + } | |
| 1425 | + /*SVG文書から呼び出されたときも処理する*/ | |
| 1426 | + getElement(document); | |
| 1427 | + /*idはアニメの中止ハンドル*/ | |
| 1428 | + var id = __step(); | |
| 1429 | + window.addEventListener("unload", function() { | |
| 1430 | + /*ページを移る際には、アニメーションを中止しておく(中止する保証がないため)*/ | |
| 1431 | + window.cancelAnimationRequest && cancelAnimationRequest(id); | |
| 1432 | + }); | |
| 1433 | + | |
| 1434 | + /*文書からアニメーション関連要素を取り出して、オブジェクトを初期化*/ | |
| 1435 | + function getElement (svgDoc) { | |
| 1436 | + var $set = base("$calcMode").$attribute.$setElement; | |
| 1424 | 1437 | init($set, "set"); |
| 1425 | 1438 | init($set.$animateElement, "animate"); |
| 1426 | 1439 | init($set.$animateElement, "animateColor"); |
| @@ -1434,21 +1447,14 @@ function getDocument() | ||
| 1434 | 1447 | var hash = svgDoc.defaultView.location.hash.slice(1); |
| 1435 | 1448 | svgDoc.getElementById(hash).beginElement(); |
| 1436 | 1449 | }); |
| 1437 | - } | |
| 1438 | - } | |
| 1439 | - /*idはアニメの中止ハンドル*/ | |
| 1440 | - var id = __step(); | |
| 1441 | - window.addEventListener("unload", function() { | |
| 1442 | - /*ページを移る際には、アニメーションを中止しておく(中止する保証がないため)*/ | |
| 1443 | - window.cancelAnimationRequest && cancelAnimationRequest(id); | |
| 1444 | - }); | |
| 1445 | - | |
| 1446 | - function init (obj, name) { | |
| 1447 | - var eles = svgDoc.getElementsByTagNameNS(svgns, name) | |
| 1448 | - for (var i=0;i<eles.length;++i) { | |
| 1449 | - obj.up().init(eles.item(i)); | |
| 1450 | - } | |
| 1451 | - eles = obj = void 0; | |
| 1450 | + | |
| 1451 | + function init (obj, name) { | |
| 1452 | + var eles = svgDoc.getElementsByTagNameNS(svgns, name) | |
| 1453 | + for (var i=0;i<eles.length;++i) { | |
| 1454 | + obj.up().init(eles.item(i)); | |
| 1455 | + } | |
| 1456 | + eles = obj = void 0; | |
| 1457 | + }; | |
| 1452 | 1458 | }; |
| 1453 | 1459 | } |
| 1454 | 1460 |