読者です 読者をやめる 読者になる 読者になる

理系学生日記

おまえはいつまで学生気分なのか

忍者TOOLS

Alc を使いやすくするグリモンを作ろうとしたがムダだった

Alc というと論文を書くときも,何か英語文献読むときも,鬼神のごとく大活躍をしてくれる素晴らしい英和・和英辞書機能を提供してくれて,ぼくは日々 Alc に感謝して,米を作ってくれる人に感謝しながら毎日を必死,それはもう必死で生きています.

そんな日々必死に生きているぼくですが,Alc で何か検索するときは,検索結果ページを開きっぱなしにしておくことが多い.これはなぜかというと,いちいちページを閉じてると後から何かまた検索したい word がでてきたときに,ページをロードする時間がムカつくからです.必死で生きているぼくは日々ストレスを重ねながら過ごしていますから,こういうところでストレスを溜めているとすぐ死ぬ.
ただ,たとえば Alc で "Hello" とか検索しちゃうとかなり長い検索結果になってきて,後からまた他の Word を検索しようとすると,いちいちスクロールして検索用テキストボックスを表示させないといけない.これはマジでムカつくし,マジでストレスになりますから,こんなのを繰り返しているとぼくはすぐ死ぬ.
そういうわけですから,ctrl+e を押したらテキストボックスをクリアしてフォーカスさせるというグリモンを作ったのです.

// ==UserScript==
// @name           clear-textbox-on-alc
// @namespace      d.hatena.ne.jp/kiririmode
// @description    Focus and clear content on textbox on Alc
// @include        http://eow.alc.co.jp/*/UTF-8/
// ==/UserScript==
(function(){
    var tb = document.getElementById( "q" );
    var accesskey = "ctrl+e";

    // install event listener
    document.addEventListener( "keydown", function (e) {
        if ( getKey( e ) == accesskey ) {
            tb.value = "";
            tb.focus()
        }
    }, false );

    function getKey( e ) {
        var ret = "";
        if ( e.ctrlKey ) ret = "ctrl+";
        ret += String.fromCharCode( e.keyCode ).toLowerCase();
        return ret;
    }
})();

ところがですね,後になって気づいたんですけども,Alc の検索テキストボックスには accesskey 属性が定義されちゃってたりします.

<input id="q" name="q" autocomplete="off" value="hello" accesskey="e" type="text" class="qry" />

Firefox の標準だと,アクセスキーは Ctrl と合わせて入力できますから,ctrl+e でばっちしフォーカスされるし,文字列が選択されている状態になるもんだからそのまま文字入力すれば勝手にクリアされたのと同じことになる.
そういうわけで,上のグリモンは完全にカス,おまえ何してんの?属性くらい最初に見ないの?バカなの?ということになった.