[Sie-announce] SIEコード [2968] #12386 「外部のSVGファイルにリンクしてもジャンプできない」を修正

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2011年 9月 28日 (水) 22:11:50 JST


Revision: 2968
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2968
Author:   dhrname
Date:     2011-09-28 22:11:49 +0900 (Wed, 28 Sep 2011)

Log Message:
-----------
#12386 「外部のSVGファイルにリンクしてもジャンプできない」を修正

Ticket Links:
:-----------
    http://sourceforge.jp/projects/sie/tracker/detail/12386

Modified Paths:
--------------
    branches/08x/086/org/w3c/dom/svg.js

Modified: branches/08x/086/org/w3c/dom/svg.js
===================================================================
--- branches/08x/086/org/w3c/dom/svg.js	2011-09-28 12:53:50 UTC (rev 2967)
+++ branches/08x/086/org/w3c/dom/svg.js	2011-09-28 13:11:49 UTC (rev 2968)
@@ -4893,18 +4893,20 @@
   this.addEventListener("click", function(evt){
     var tar = evt.target;
     if (tar.href.baseVal.indexOf(".svg") !== -1) { //もし、リンク先がSVGファイルならば
-      tar.ownerDocument._window.event.cancelBubble = true;
-      tar.ownerDocument._window = {event: {}};     //ウィンドウオブジェクトはアクセスできなくなるので、代わりのオブジェクトを用意
-      window.detachEvent && window.detachEvent("unload", unsvgtovml);
-      window.onunload = function(){};
-      var sd = document.getElementsByTagName("script"),
-          i = 0,
-          dds = "";
-      while(sd[i]) {
-        ++i;
-        dds = dds+ "<script defer='defer' src='" +sd[i].getAttribute("src")+ "'></script>";
+      var sd = document.body,
+          ob;
+      NAIBU.doc = new ActiveXObject("MSXML2.DomDocument");
+      sd.lastChild.innerHTML = "<object data='" +tar.href.baseVal.split("#")[0]+ "' width='" +screen.width+ "' height='" +screen.height+ "' type='image/svg+xml'></object>";
+      sd.appendChild(sd.lastChild.firstChild)
+      evt.preventDefault();
+      while (sd.firstChild !== sd.lastChild) {     //オブジェクト要素以外を除去
+        sd.removeChild(sd.firstChild);
       }
-      document.write("<html><head>" +dds+ "</head><body><object data='" +tar.href.baseVal.split("#")[0]+ "' width='1000' height='1000' type='image/svg+xml'></object></body></html>");
+      ob = NAIBU._search([sd.lastChild]);
+      ob._next = {_init: function () {
+        document.title = ob.getSVGDocument().title;
+      }};
+      ob._init();
     }
   }, false);
   SVGURIReference.apply(this, arguments);
@@ -6309,6 +6311,8 @@
           s=[],
           _search = function(_ob) {
             var ifr, obi, n;
+            s || (s = []);             //NAIBU._searchで呼ばれたときに必要
+            _doc || (_doc = document);
             for (var i=0;_ob[i];++i) {
               obi = _ob[i];
               s[s.length] = new GetSVGDocument(obi);
@@ -6327,9 +6331,11 @@
               obi.parentNode.insertBefore(ifr, obi);
             }
             i = obi = ifr = _ob = void 0;
+            return s[s.length-1];
           };
       _search(ob);
       _search(em);
+      NAIBU._search = _search; //a要素がクリックされたときに使う関数
       ob = em = _search = void 0;
       for (var i=0;i<s.length;++i) {
         if (i < s.length-1) {




Sie-announce メーリングリストの案内
Back to archive index