« MD5の脆弱性 | メイン | 検索デスクの一覧を開閉式にするBookmarklet Ver1.0.0 »

検索デスクのテキストボックスでインクリメンタルサーチを行なうBookmarklet Ver1.0.0

横断検索サイトである『検索デスク』をリンク集として使用している場合、目的の検索サイトへのリンクが何処に表示されているのか忘れてしまうことがある。
(私は忘れる。)
このBookmarkletは検索デスクのテキストボックスに検索デスク内検索機能を追加する。まず、検索デスクのテキストボックスが表示されているページを開き、このBookmarkletを実行する。テキストボックスに文字を入力すると、入力文字を含む検索サイトへのリンクが強調表示されるようになる。検索デスクのHTML構造は非常にしっかりと構成されているために、今回のような処理が非常に行ないやすい。コーディングに使用可能な文字数が限られているBookmarkletの場合、非常にありがたい。強調対象が検索サイトのみで、サイト内リンク等を簡単に除くことが可能だったのはこのおかげである。
(ただ、この判定にclass属性の値を用いている。頂けなくも致し方ない部分であるため、あまりお勧めできない。)
HTMLをしっかりと書けば(つまりDOM構造を熟考していれば)、JavaScriptもかなり簡潔になるということである。
/*
================================================================================
    Name        :   検索デスクのテキストボックスでインクリメンタルサーチを行なうBookmarklet Ver1.0.0
    In          :   [none]      
    Out         :   [none]      
    Note        :   検索デスクの検索用テキストボックスでインクリメンタルサーチを行ないリンク先を強調表示します。
--------------------------------------------------------------------------------
    Version     :   Ver1.0.0    |   2006/12/28  |   新規作成
--------------------------------------------------------------------------------
    License     :   New BSD license
    URL         :   www.kanasansoft.com
================================================================================
*/

(
    function(){
        if((/^http:\/\/www.searchdesk.com\//).test(location.href)){
            try{
                document.forms[0].qkey.onkeyup  =
                function(){
                    var
                         o=document.getElementsByTagName("div")
                        ,t=this.value
                        ,r=new RegExp(t,"i")
                        ,a
                        ,i
                        ,j
                    ;
                    for(i=0;i<o.length;i++){
                        if(o[i].className=="part-r"){
                            a=o[i].getElementsByTagName("a");
                            for(j=0;j<a.length;j++){
                                a[j].style.backgroundColor=t!=""&&r.test(a[j].innerText||a[j].textContent)?"#ff0000":""
                            }
                        }
                    }
                }
            }catch(e){
                alert("not find textbox")
            }
        }else{
            alert("don¥'t match location¥n[SearchDesk]")
        }
    }
)
()

トラックバック

このエントリーのトラックバックURL:
http://www.kanasansoft.com/cgi/mt/mt-tb.cgi/16

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

Google