Changeset 7164

Show
Ignore:
Timestamp:
02/26/08 17:08:50 (5 years ago)
Author:
mattn
Message:

lang/javascript/userscripts/googlereaderfullfeed.user.js:
本家0.0.7への差分をマージ。

Files:
1 modified

Legend:

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

    r7141 r7164  
    88// @description loading full entry on Google Reader 
    99// @privilege   false 
    10 // @version     0.0.6 
     10// @version     0.0.7 
    1111// based on LDR Full Feed(http://d.hatena.ne.jp/toshi123) 
    1212// 
     
    2929'AAAAACwAAAAAEwATAAAETBDISWsNOOuNJf+aB4LiyJUZ0awNsqGB0RSYkAwhoAnKYaIEBm4EXJgC'+ 
    3030'QGFA1VBmUDwfJjjs6DQy2tJp5TBX0uf1mCO/xmYk2mxptyMAOw=='; 
     31 
     32var ICON2 = 'data:image/gif;base64,'+ 
     33'R0lGODdhEwATAPQAMUFp4YfO64fO7ofW9Yfe+LHO68XW68X3/MX3/9ne6+zn7uz/+Oz//Oz////v'+ 
     34'8v///P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAA'+ 
     35'EwATAAAFUCAgjmRZBmiqrqjIvqoLw/LM1unQQLyz4gECJIESHAwxgEqAUNhwAwZyBl0UnsqcNKCD'+ 
     36'PKatbLGpBQeAQiJ3mwJydzxn0vZy0+1Y+s3EN4UAADs='; 
    3137 
    3238// == [Config] ====================================================== 
     
    97103  var text = res.responseText; 
    98104 
    99   if(this.info.base){ 
    100     text = relativeToAbsolutePath(text, this.info.base); 
    101   } else { 
    102     text = relativeToAbsolutePath(text, this.itemInfo.itemURL); 
    103   } 
    104105  if(REMOVE_SCRIPT) text = text.replace(/<script[^>]*>[\S\s]*?<\/script[^>]*>/g, ""); 
    105106  if(REMOVE_H2TAG) text = text.replace(/<h2[^>]*>[\S\s]*?<\/h2[^>]*>/g, ""); 
    106107  var htmldoc = parseHTML(text); 
     108  if(this.info.base && !this.itemInfo.itemURL.match(this.info.base)){ 
     109     relativeToAbsolutePath(htmldoc, this.info.base); 
     110  } else { 
     111     relativeToAbsolutePath(htmldoc, this.itemInfo.itemURL); 
     112  } 
    107113  for (var i = 0;i < FullFeed.documentFilters.length; i++) { 
    108114    FullFeed.documentFilters[i](htmldoc, this.itemInfo.itemURL, this.info); 
     
    435441 
    436442// == [Utility] ===================================================== 
    437  
    438 function relativeToAbsolutePath (text, link){ 
    439   text = text.replace(/(<[^>]*img\s+[^>]*src\s*=\s*")([^"]+)(?="[^>]*>)/gi, function(match, l, src){ 
    440     if (/^https?:\/\//.test(src)) { 
    441       return l+src; 
    442     } else if (src[0] == "/") { 
    443       var link_top = link.replace(/^(https?:\/\/[^\/]+)\/.*$/, '$1'); 
    444       return l+link_top+src; 
    445     } else { 
    446       var link_base = link.replace(/\/[^\/]+$/, '/'); 
    447       return l+link_base+src; 
    448     } 
    449     }); 
    450   return text; 
    451 } 
     443function relativeToAbsolutePath(htmldoc, base) { 
     444  var top = base.match("^https?://[^/]+")[0]; 
     445  var current = base.replace(/\/[^/]+$/, '/'); 
     446 
     447  Array.forEach(htmldoc.getElementsByTagName("a"), function (elm) { 
     448    if(elm.getAttribute("href")) elm.href = _rel2abs(elm.getAttribute("href"), top, current); 
     449  }); 
     450  Array.forEach(htmldoc.getElementsByTagName("img"), function (elm) { 
     451    if(elm.getAttribute("src")) elm.src = _rel2abs(elm.getAttribute("src"), top, current); 
     452  }); 
     453} 
     454 
     455function _rel2abs(url, top, current) { 
     456  if (url.match("^https?://")) { 
     457    return url; 
     458  } else if (url.match("^/")) { 
     459    return top + url; 
     460  } else { 
     461    return current + url; 
     462  } 
     463} 
     464 
    452465 
    453466function message (mes){