Greasemonkey : LDR - Drive の Safari と Opera 対応バージョン

brazil さんの LDR - Drive は本当に便利なのに、 Safari と Opera で使えないのが残念な感じでした。

書きかえるところ

少しだけです。まずは最初をこんなふうに。

// Opera, Firefox
if( typeof Keybind == typeof void 0 ){
    window.addEventListener('load', init_ldr_drive, true);
}
else init_ldr_drive();
// Safari

function init_ldr_drive() {
    var w = typeof unsafeWindow == typeof void 0 ?
            window: unsafeWindow;
    
    w.Keybind.remove('j');
    w.Keybind.remove('k');
    
    keyTapper('J', function(e, repeat){
        w.Control.scroll_next_item()
    });
    
    keyTapper('K', function(e, repeat){
        w.Control.scroll_prev_item();
    });
}

あとは Opera のために、ハッシュの最後の値からカンマを抜いて、forEach を入れかえてください。keyTapper も前に手を加えたコードから変わっているので、新しくこちらを使うのがオススメです。

ソース

ldrdrive.user.js

(また)(勝手に)あげておきました。

ひとことふたこと

Opera なら無名関数でくくるべきです。でも init_ldr_drive なんて関数は必要にならないと思うのでほうっておきます。

Safari では GreaseKit が必要です。スクリプトをロードするタイミングが違うために、あのような分岐が必要となっています。 GreaseKit は load イベントが過ぎてから、各ユーザースクリプトを実行しているようです。

2007年12月08日 23:57   [ permalink ]

トラックバックURL

この記事にコメントする

名前
URL
本文