Give Me Bigger

學網連wretch速度很快,故開發此套件,方便逛相簿,搭配Website: cleaner - WRETCH使用,成效更佳。
版本記錄

// ==UserScript==
// @name        Give Me Bigger
// @description    表格式顯示相簿原圖
// @priority 1
// @version        2011-05-17
// @include        http://www.wretch.cc/album/album.php*
// @include        http://*.pixnet.net/album/set/*
// @include        http://photo.xuite.net/*/*
// ==/UserScript==
GM_registerMenuCommand('Give Me Bigger - Setting columns', settingColumns);
GM_registerMenuCommand('Give Me Bigger - Setting width of images', settingImgWidth);
var siteRule=['www.wretch.cc','pixnet.net','photo.xuite.net'];
var thumbRule=['thumbs\/t','thumb_','_c'];
var thumbRRule=['','','_l'];
var contentRule=['#ad_square','#contentBody','.list_area'];
var linkRule=['td.side a','.thumbImg a','.list_area .photo_info a'];
//Setting columns
function settingColumns() {
    var oldCols=GM_getValue('cols')||2;    //(Default Value:2)
    GM_setValue('cols', prompt('Please enter the columns.', oldCols));
}
//Setting width of images
function settingImgWidth() {
    var oldIW=GM_getValue('imgwidth')||240;    //(Default Value:240)
    GM_setValue('imgwidth', prompt('Please Enter the width(px) of images.', oldIW));
}
//Setting display infomation
function settingInfo() {
    window.infoBlock=document.createElement('p');
        infoBlock.style.position='absolute';
        infoBlock.style.top='10px';
        infoBlock.style.left='50px';
        infoBlock.style.fontSize='1.8em';
    window.curCount=document.createElement('span');    //Current complete images
        curCount.textContent=0;
    window.toaCount=document.createElement('span');    //Amount of all images

    infoBlock.appendChild(curCount);
    infoBlock.appendChild(toaCount);
  
    document.getElementsByTagName('body')[0].appendChild(infoBlock);
    window.oriTitle=document.title;    //Save oringinal title
}
//Counting complete images
function imgReady(){
    curCount.textContent=parseInt(curCount.textContent,10)+1;
    document.title = curCount.textContent + toaCount.textContent;
}
//依據網址找出規則式編號
function chkIndex(){
    for(var i=0;i<siteRule.length;i++)
        if(location.href.indexOf(siteRule[i]) != -1) return i
}
function GMB() {
    settingInfo();
    var ruleIndex=chkIndex();    //規則式編號
    var imgWidth=parseInt(GM_getValue('imgwidth')||240,10)    //圖片寬度
    GM_addStyle('.GMBtd img{max-width:@imgwidthpx}'.replace('@imgwidth',imgWidth));
    var pics=document.querySelectorAll('img[src*="' + thumbRule[ruleIndex].replace('\\','') + '"]');    //全部縮圖
    var picLinks=document.querySelectorAll(linkRule[ruleIndex]);    //圖片超連結
    var cols=parseInt(GM_getValue('cols')||3,10);    //欄數
    var intRows=Math.floor(pics.length / cols);    //整數列
    var leftPics=pics.length % cols;    //剩餘圖片數
    var patt=RegExp('(' + thumbRule[ruleIndex] + ')', 'i');    //原圖規則式
    var htmlCode=[];
    toaCount.textContent=' / ' + pics.length;
    //先處理整數列
    for(var i=0;i<intRows;i++)
    {
        htmlCode[htmlCode.length]='<tr>';
        for(var j=0;j<cols;j++)
            htmlCode[htmlCode.length]='<td class="GMBtd"><a target="_blank" href="' + picLinks[i*cols+j].href + '"><img src="'+ pics[i*cols+j].src.replace(patt,thumbRRule[ruleIndex])+'" /></a></td>';
        htmlCode[htmlCode.length]='</tr>';
    }
    //再處理剩餘圖片
    if(leftPics != 0)
    {
        htmlCode[htmlCode.length]='<tr>';
        for(var k=0;k<leftPics;k++)
            htmlCode[htmlCode.length]='<td class="GMBtd"><a target="_blank" href="' + picLinks[intRows*cols+k].href + '"><img src="'+ pics[intRows*cols+k].src.replace(patt,thumbRRule[ruleIndex])+'" /></a></td>';
        htmlCode[htmlCode.length]='</tr>';
    }
    var tb=document.createElement('table');
    tb.innerHTML=htmlCode.join('');
    tb.id='GMB';
    var oldContent=document.querySelector(contentRule[ruleIndex]);
    oldContent.parentNode.replaceChild(tb,oldContent);
  
    //綁定計算圖片完成數
    var myPics=document.querySelectorAll('#GMB img');
    for(var i=0;myPics[i];++i)
        myPics[i].addEventListener('load',imgReady,false);
    delete htmlCode;
    delete pics;
    delete picLinks;
}
window.addEventListener('DOMContentLoaded',GMB,false);
window.addEventListener('load',function() {document.title=oriTitle},false);