次の画像/前の画像、ブックマークレットをベースにちょこちょこ弄った。
●主な変更点
・画像以外の見出しタグ(h2,h3等)にも対応(させたつもり)
・途中でy軸座標が折り返してるhtml構造(マルチカラムなブログ等)に対応(させry
・前処理として次の移動ポイントを示すテーブルを作成
→ メリット: 実行速度向上(前処理を除く)
→ デメリット: スクリプト実行後のウィンドウ/ページサイズ変更に非対応
●概要
・Firefox2.0用のブックマークレット
・指定タグ間をj/kキーで上下に移動できるようにするモノ
(デフォでは総ピクセル数 ImgMin 以上の画像が指定されてる)
●使い方
・ブックマークにキーワード(jkなど)を指定して
ロケーションバーに jk h2 といった感じで入力
最近JavaScript触り始めたんだけど
Firebugって死ぬほど便利だな
●主な変更点
・画像以外の見出しタグ(h2,h3等)にも対応(させたつもり)
・途中でy軸座標が折り返してるhtml構造(マルチカラムなブログ等)に対応(させry
・前処理として次の移動ポイントを示すテーブルを作成
→ メリット: 実行速度向上(前処理を除く)
→ デメリット: スクリプト実行後のウィンドウ/ページサイズ変更に非対応
●概要
・Firefox2.0用のブックマークレット
・指定タグ間をj/kキーで上下に移動できるようにするモノ
(デフォでは総ピクセル数 ImgMin 以上の画像が指定されてる)
●使い方
・ブックマークにキーワード(jkなど)を指定して
ロケーションバーに jk h2 といった感じで入力
javascript: var TgNm='%s',OfSt=8,ImgMin=320*240; if(TgNm=='%25s')TgNm='img'; with(document){ function at(e,t){ if(!e)return t; return at(e.offsetParent,t+e.offsetTop) } var v=compatMode.match('1')?documentElement:body, is=v.getElementsByTagName(TgNm), sT='scrollTop', op, p=[[]]; for(i=0,j=0,n=0;i<is.length;i++){ ci=is[i]; if(ci.width*ci.height >= ImgMin ||TgNm!='img'){ ct=at(ci,0); q=p[j]; if(ct==q[n-1]){ }else if(ct<q[n-1]){ p[++j]=[ct]; n=1; }else{ q[n++]=ct; } } } for(j=p.length-1; j>0; j--){ pf=p[0], x=0, lf=p[0].length, pj=p[j], y=0, lj=p[j].length; tmp=[], z=0; while(x<lf&&y<lj) tmp[z++]=pf[x]<pj[y]?pf[x++]:pj[y++]; while(x<lf) tmp[z++]=pf[x++]; while(y<lj) tmp[z++]=pj[y++]; p[0] = tmp; } tp=p[0], l=tp.length; var pMin=tp[0], pMax=tp[l-1], IdxRng=Math.floor((pMax-pMin)/l)+1; var DB=[[0]], Np=[[],[]]; i=0, j=0, pre=pMin, nxt=pMax; while(j<l){ ct = tp[i]; idx = Math.floor((ct-pMin)/IdxRng); Dj = DB[j]; if(idx==j){ if(Dj[0]>0){ Dj[++Dj[0]] = ct; }else{ Np[0][j]=pre; Dj = [1,ct]; } pre = ct; DB[j] = Dj; i++; }else{ Np[0][++j] = pre; DB[j] = [0]; } } for(j=l-1; j>=0; j--){ Np[1][j] = nxt; Dj=DB[j]; if(Dj[0]>0)nxt=Dj[1]; } var f=function(e){ e=(e||event); k=e.keyCode; if(k==74)op=1; else if(k==75)op=-1; else return; vi=Math.floor((v[sT]-pMin+OfSt)/IdxRng); while(0<=vi&&vi<l){ n=DB[vi][0]; for(i=1;i<=n;i++){ ct=DB[vi][op>0?i:n-i+1]-OfSt; if((ct-v[sT])*op>0){ v[sT]=ct; return; } } v[sT] = Np[op>0?1:0][vi]-OfSt; return; } if(op*vi<0)v[sT]=op>0?pMin-OfSt:pMax-OfSt; }; onkeydown=f; f({keyCode:74}); }
最近JavaScript触り始めたんだけど
Firebugって死ぬほど便利だな