日記/管理人/2008-07-16

Last-modified: 2008-07-17 (木) 19:36:29

firegesture スクリプト

firefox3になってからall in one tuika gestureの更新がなくて
firegestureというものに乗り換えてみようと思ったものの
結局、ドメイン関連の戻ったり、進んだりする機能がないので
all in one gesture のスクリプトを貰ってくることにした。

 

あっているかが不明なので怖いのですが
「前のドメインの最後まで戻る」と「現在のドメインの先頭まで戻る」という機能をよく使っていたので
これをスクリプトに書いてみました(というかコピペと少し付け足しただけ)
「前のドメインの最後まで戻る」

 var webNav = getWebNavigation();
 var aRwnd = -1;
 var aCurrDomainEndPoint = false;
 var sessionH = webNav.sessionHistory;
 var lURI = sessionH.getEntryAtIndex(sessionH.index, false).URI;
 var c_host = lURI ? lURI.host : null ;
 var check = (aRwnd == -1) ? function(aInd) {return aInd >= 0;} : function(aInd) {return aInd < sessionH.count;}
 var start = sessionH.index + aRwnd;
 var t_host;
 for (var i = start; check(i); i += aRwnd) {
    lURI  = sessionH.getEntryAtIndex(i, false).URI;
    t_host = lURI ? lURI.host : null ;
    if ((c_host && !t_host) || (!c_host && t_host) || (c_host != t_host)) {
       if (aCurrDomainEndPoint) {
          if (i == start) {
             c_host = t_host;
             continue;
          }
          i -= aRwnd;
       }
	webNav.gotoIndex(i);
       return;
    }
 }
 webNav.gotoIndex((aRwnd == -1) ? 0 : sessionH.count - 1 );

「現在のドメインの先頭まで戻る」

 var webNav = getWebNavigation();
 var aRwnd = -1;
 var aCurrDomainEndPoint = true;
 var sessionH = webNav.sessionHistory;
 var lURI = sessionH.getEntryAtIndex(sessionH.index, false).URI;
 var c_host = lURI ? lURI.host : null ;
 var check = (aRwnd == -1) ? function(aInd) {return aInd >= 0;} : function(aInd) {return aInd < sessionH.count;}
 var start = sessionH.index + aRwnd;
 var t_host;
 for (var i = start; check(i); i += aRwnd) {
    lURI  = sessionH.getEntryAtIndex(i, false).URI;
    t_host = lURI ? lURI.host : null ;
    if ((c_host && !t_host) || (!c_host && t_host) || (c_host != t_host)) {
       if (aCurrDomainEndPoint) {
          if (i == start) {
             c_host = t_host;
             continue;
          }
          i -= aRwnd;
       }
	webNav.gotoIndex(i);
       return;
    }
 }
 webNav.gotoIndex((aRwnd == -1) ? 0 : sessionH.count - 1 );

とりあえず動きますが、保証はしません。
補足説明としては

 var aRwnd = +1;
 var aCurrDomainEndPoint = true;

ここの+1と-1、trueとfalseの組み合わせの4パターンでドメインの操作が行えるみたいだと思います
おそらく-1が前のドメインで+が現在のドメイン
2008/07/17 間違っていたので訂正します
 -1が戻るという意味で
trueが現在のドメインの先頭まで戻るfalseが前のドメインの最後まで戻る
 +1が進むなので
trueが次のドメインの先頭まで進むfalseが現在のドメインの最後まで進むだと思われます。