Show
Ignore:
Timestamp:
08/23/08 00:32:26 (3 months ago)
Author:
gyuque
Message:

url filter

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/userscripts/gmll.user.js

    r17974 r18081  
    66// ==/UserScript== 
    77 
    8 // 設定 
     8// 設定 --------------- 
    99 
    1010var MAP_ZOOM_LEVELS = [4, 10] // 地図のズームレベル e.g. [4, 10] → レベル4とレベル10の地図を生成して並べる 
    1111var GMAP_VERSION    = "w2.80" // Google Mapsのバージョン。なんか時々変わる。 
    1212 
     13// URLフィルタ 
     14var REPLACE_URLS = { 
     15        "://ime.nu/": "://" /* 2chリダイレクタ */ 
     16} 
     17 
     18// 無視条件 
     19var IGNORE_CASES = { 
     20        "://b.hatena.ne.jp": function(node) { 
     21                node = node.parentNode; 
     22                for (var i = 0;i < 2;i++) { 
     23                        if (!node) break; 
     24                        if (node.className == "entry-footer") return false; 
     25                        node = node.parentNode; 
     26                } 
     27 
     28                return true; 
     29        } 
     30} 
     31 
     32// -------------------- 
    1333 
    1434var GoogleMapsCalc={ 
     
    5777                var len  = list.snapshotLength 
    5878 
     79                var cur_url = unsafeWindow.location.toString(); 
     80                for (var ptn in IGNORE_CASES) 
     81                { 
     82                        if (cur_url.indexOf(ptn) < 0) 
     83                                IGNORE_CASES[ptn] = null; 
     84                } 
     85 
    5986                for (var i = 0;i < len;i++) { 
    6087                        this.process(list.snapshotItem(i)); 
     
    6289        }, 
    6390 
     91        check_ignore: function(aelem) { 
     92                for (var ptn in IGNORE_CASES) 
     93                { 
     94                        if (!IGNORE_CASES[ptn]) continue; 
     95 
     96                        return IGNORE_CASES[ptn](aelem); 
     97                } 
     98 
     99                return true; 
     100        }, 
     101 
    64102        process: function(aelem) { 
     103                if (!this.check_ignore(aelem)) 
     104                        return; 
     105 
    65106                var p = aelem.parentNode; 
    66  
    67  
    68107                var maps = document.createElement("div"); 
    69108 
    70109                for (var i in MAP_ZOOM_LEVELS) 
    71110                { 
    72                         var m = this.generateMap(aelem.href, MAP_ZOOM_LEVELS[i]); 
     111                        var m = this.generateMap(this.filterURL(aelem.href), MAP_ZOOM_LEVELS[i]); 
    73112                        if (!m) return; 
    74113                        m.style.left = (Extractor.MAP_WIDTH+3) * (i-0) + "px"; 
     
    78117                maps.className = "gq_gmll_maps"; 
    79118                p.insertBefore(maps, aelem); 
     119        }, 
     120 
     121        filterURL: function(org) { 
     122                for (var ptn in REPLACE_URLS) 
     123                        org = org.replace(ptn, REPLACE_URLS[ptn]); 
     124 
     125                return org; 
    80126        }, 
    81127