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) {