OSDN Git Service

チケット #30213「ハイパーリンクのリンク先のベースが実際と異なる」修正
authordhrname <dhrname@users.sourceforge.jp>
Sat, 1 Dec 2012 14:34:24 +0000 (23:34 +0900)
committerdhrname <dhrname@users.sourceforge.jp>
Sat, 1 Dec 2012 14:34:24 +0000 (23:34 +0900)
org/w3c/dom/svg.js

index 9807f42..fbcd196 100644 (file)
@@ -1011,20 +1011,21 @@ function SVGURIReference() {
         } else {\r
           /*durlが相対URLの場合はdirecoryの名前を消す*/\r
           while (reg.exec(durl)) {\r
-            base = base.replace(/\/[^\/]+?$/, "");\r
+            base = base.replace(/\/[^\/]+?(\/[^\/]*?)$/, "$1");\r
           }\r
+          base = base.replace(/\/[^\/]+?$/, "/"); //URIの最後尾にあるファイル名は消す。例: /n/sie.js -> /n/\r
           base = base + durl.replace(reg, "");\r
         }\r
         if (href.indexOf("#") === 0) { //href属性において#が一番につく場合\r
           uri = base + href;\r
         } else if (!uri){\r
-          base = base.replace(/\/[^\/]+?$/, "/"); //URIの最後尾にあるファイル名は消す。例: /n/sie.js -> /n/\r
+          base = base.replace(/\/[^\/]+?$/, "/");\r
+          reg.lastIndex = 0; // execメソッドを使うため\r
           while (reg.exec(href)) {\r
-            base = base.replace(/\/[^\/]+?$/, "");\r
+           base = base.replace(/\/[^\/]+?(\/[^\/]*?)$/, "$1");\r
           }\r
           uri = base + href.replace(reg, "");\r
         }\r
-        console.log(uri);\r
         show = tar.getAttributeNS("http://www.w3.org/1999/xlink", "show") || "embed";\r
         if (show === "replace") {\r
           tar._tar.setAttribute("href", uri);\r