OSDN Git Service

Optimize replacing anchors.
authorNARUSE, Yui <naruse@users.sourceforge.jp>
Wed, 3 Jun 2009 14:45:33 +0000 (23:45 +0900)
committerNARUSE, Yui <naruse@users.sourceforge.jp>
Wed, 3 Jun 2009 15:25:49 +0000 (00:25 +0900)
js/lunardial/feedblog_mixi.js

index 4d2a4bf..e11fecd 100644 (file)
@@ -157,15 +157,12 @@ function validateText(contents){
     }
     
     // Aタグを変換する
-    while (target_tag = contents.match(/<a[^>]*>/)) {
-        // href="..."の部分のみを抜き出す
-        target_element = target_tag[0].match(/href=["'][^"']*["']/i);
+    var base_uri = document.location.href.replace(/[^\/]+$/, '');
+    var func = function(target, quote, url) {
         // 相対URIが検出された場合、フルに置換する
-        target_element = target_element[0].replace(/\.\//, "http://lunardial.sakura.ne.jp/");
-        // Aタグ全体を消去し、再度Aクローズタグの置換を行う
-        contents = contents.replace(target_tag, "");
-        contents = contents.replace(/<\/a>/i, " ( " + target_element.replace(/href=|["']/g, "") + " ) ");
-    }
+        return '( ' + url.replace(/^(?!http)(?:\.\/)?/, base_uri) + ' )';
+    };
+    contents = contents.replace(/<a[^>]*href=(["'])(.*?)\1[^>]*>.*?<\/a>/i, func);
     
     // 通常のタグすべてを削除する
     contents = contents.replace(/<[^>]*>|<\/[^>]*>/ig, "");