2008年 01月 07日

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

http://subtech.g.hatena.ne.jp/cho45/20070923/1190498279 というのを書いたけど、もういっこ考えてみた。

javascript:["foobar",0].sort(function(a){alert(a)});void(0);

最初に一文字入ってしまうけどそこそこいい感じ。二つまでは任意の引数がわたせる (三つ以上は二回以上よばれる)

javascript:["foo","bar"].sort(function(a,b){alert([a,b])});void(0);

二文字以上とかになると普通に s="foobar";(function(){})(s); とかやればいいけどグローバル変数つかうのはなんか気持ち悪いよなぁ。

script 挿入

javascript:["url",0].sort(function(a){document.body.appendChild(s=document.createElement("script"),s.type="text/javascript",s.charset="utf-8",s.src=a)});void(0);
javascript:["url",0].sort(function (a) {
	document.body.appendChild(
		s = document.createElement("script"),
		s.type="text/javascript",
		s.charset="utf-8",
		s.src=a
	)
});
void(0);
  • JS では必要な引数以上わたしても普通は問題ない。
  • 関数は引数が全て評価されてから実行される。

replace のほうがマシかなぁ。一文字あるだけで違う