m2

bookmarklet 版 bookmarklet maker

2008/01/26 追記
最新版(といってもだいぶ前に書いたもの。機能追加はしていません)です。下の改行付きのコードとは異なります。

  • -

bookmarklet maker が非常に便利なので Ajax 開発向けに bookmarklet にしました。
(2007/02/20)行コメント削除の正規表現に誤りがあったので修正。あとリンクと文字数表示を追加。

改行付き

javascript:(function(){
var d=document,$=function(x){return d.getElementById(x)},b,s=[];
b=$('bmmaker');
if(!b){
    b=d.createElement('div');
    b.id='bmmaker';
    d.body.appendChild(b);
    s.push('<div>script:<br>');
    s.push('<textarea id="bmmaker_1" style="width:100%;height:60%">(function(){\n  \n})()<\/textarea>');
    s.push('<br><button id="bmmaker_do">実行<\/button>&#160;&#160;');
    s.push('<button id="bmmaker_clear">クリア<\/button><button id="bmmaker_close">閉じる<\/button>');
    s.push('&#160;<a id="bmmaker_link">bookmarklet<\/a>&#160;<span id="bmmaker_count"><\/span>');
    s.push('<\/div>');
    s.push('<div>script(space removed):<br>');
    s.push('<textarea id="bmmaker_2" style="width:100%;height:20%"><\/textarea>');
    s.push('<\/div>');
    b.innerHTML=s.join('');
    $('bmmaker_1').onkeyup=function(){
        var t=$('bmmaker_1').value;
        t=t.replace(/(^|[^:])\/\/.*/g,'$1'); // 行コメント削除(「://〜」は除外)
        t=t.replace(/\s*(\r)?\n\s*/g,'');    // 改行回りの空白を除去
        if(!/^javascript:/.test(t))t='javascript:'+t;
        $('bmmaker_2').value=t;
        $('bmmaker_link').href=t;
        $('bmmaker_count').innerHTML='('+t.length+' chars)';
    };
    $('bmmaker_do').onclick=function(){location.href=$('bmmaker_2').value};
    $('bmmaker_clear').onclick=function(){$('bmmaker_1').value='(function(){\n  \n})()';$('bmmaker_1').onkeyup()};
    $('bmmaker_close').onclick=function(){b.style.display='none'};
}
with(b.style){
    width='100%';
    height='60%';
    margin='0';
    padding='0';
    display='block';
    position='fixed';
    top='10%';
    left='0';
    background='silver';
}
})()

例えば Google のトップページでこの bookmarklet を実行すると、Google の検索結果に Ajax アクセスする bookmarklet が書きやすくなります。

  • -

こうなるとコードアシストも欲しくなるなぁ。できるかな?