2007年 09月 23日

ブックマークレットとかで、設定を先頭に書けるようにする

設定を分離するために

javascript:(function (url) {
   // hoge
})("http://example.com");

みたいにしたりするけど、最後に書くのがちょっとだるい。ので、次のようなのを考えてみた。

javascript:"http://example.com".replace(/.+/, function (url) {
  // hoge
});void("fumino");

ちょっと長くなるのでぎりぎりの場合はつかえないけど、設定が前にでてくるので書きかえやすい。スクリプト要素追加系だと、中身は共通なのでこっちのほうが新しくブックマークレットつくりやすい (ささいな手間といえばそうだけれど)

これを使うとスクリプト追加系は以下のように

javascript:"url".replace(/.+/,function(url,s){s=document.createElement("script");s.charset="utf-8";s.src=url;document.body.appendChild(s)});void("san");

javascript:"url".replace(/.+/, function(url, s) {
    s = document.createElement("script");
    s.charset = "utf-8";
    s.src = url;
    document.body.appendChild(s)
});void("moe");

わりとどうでもいいけど

var s=...

と書くかわりに、仮引数を使うことでなんか気持悪いスペースを消してみてる。

複数の引数をとりたいときも同じように書ける。ただしデータの変換は関数内部でやることになるし、パースも自分で正規表現を書くことになる。でもたいしたこと書かないから問題ないとおもう。

"2222 81".replace(/(\d+) (\d+)/, function(_, a, b) { alert(Number(a)+Number(b)) });void("二次元にいきたい");