-最近はこっちで書いてます。ないブログに表示されています。新しい記事を書く事で広告が消えます。(Sun)bookmarkletjetpackなご時世に、久々のbookmarkletを作ってみました。Meiertを開いて実行すると、HTML5にチェックがついている順にソートします。(各列の見出しクリックでもソートできます)・・・それだけです。あ、もちろん、bookmarkletterで作りました。使い勝手なんとかならんかなー。僕と同じ需要のある方はどうぞ。ソースはこんな感じです。IT戦記からパクリました。(以前、コードリーディングもしてたりします。0navitimeletを修正。(Mon)bookmarkletnavitimeを検索するというだけのブックマークレットなんですが、わりと使ってます。全角スペースで駅名を区切れなくない仕様だったので直しました。最新版はこちら↓navitimeletとりあえずこれで必要十分かな。(Sun)bookmarklet引き続き昨年のTODOリストを処理中です...。ページ内の全てのチェックボックスをチェックするという、ただそれだけのブックマークレットです。僕には必要だったんです。(あえて名前はいいませんが某IT系資格申込サイトなんて、もう何回利用規約に同意させるんだと!)checkall以上、僕と同じイライラを感じている方はぜひ。あ、早速無駄に短縮化してみました。みじかすぎてあんまり効果ないけど。(Tue)bookmarkletブックマークレットを作る際一番気を使うのが文字数です。無料レンタルサーバ(やブログサービス)を使用させてもらってる身としては、ほいほいそれを行うわけにもいきません。いうわけで、ブックマークレットをなんとか短くする方法をご紹介。(consoletを作ってる時に試行錯誤しまくった成果です!)なんて言ってますが、特に大したテクニックじゃなく、DOMのクソ長い関数名とかをなんとかする要素の作成と追加を一気にやる(要注意)変数宣言をまとめるループを使うというごく普通のことをやるだけです。一応それぞれの詳細を以下で説明しますので、よろしければどうぞ。(最後にサンプルも置いてます)あ、長文です。DOMのクソ長い関数名とかをなんとかするブックマークレットではDOMをよく使います。表示しているhtmlをいじることが目的の場合が多いので、まぁ当たり前と言えば当たり前です。このDOMがかなり文字数を消費しやがります。いうわけで、まずはこいつをなんとかしましょう。b=d.body;ここまではまぁ普通です。使うdocumentとbodyを1文字の変数で参照できるようにしています。次が肝心の関数名です。DOMのメソッドはとにかく長いのでやっかいです。a=e('a');とかやると怒られちゃいます。!ここで諦めちゃいけません。]"でも呼び出せるのです。a=d[e]('a');とやれば、ほぼ目的を達成できます。要素の作成と追加を一気にやる(要注意)ページに何か追加したいときは要素を作成しないといけません。当然ながら、その要素をページに追加もしなきゃダメです。a=d[e]('a');b[c](a);のように、長くなってしまいます。a=b[c](d[e]('a'));と、一気にやっちゃいましょう。数が増えてくると意外と効きます。注意この方法でinput要素を追加するとIEでエラーになります。(次のエントリ参照)僕は知りませんが、他の要素でも起きるかもしれません。その場合は諦めて、普通に作成→追加しましょう。a=b[c](d[e]('a'));って感じで、変数毎にvarで宣言していました。これを以下のように、まとめて宣言することでかなり短くなります。一応紹介しておきます。ループを使うたとえば、2つのa要素を追加して、onclickイベントを設定するとしましょう。普通に書くとこうなります。false;}かなり長いですね...。ループを使えば少しは短くすることができます。f){z=b[c](d[e]('a'));z.href='#';z.innerHTML=i;z.onclick=f[i];}「同じような処理はループで」なんてのは、JSどころかプログラミングの超初歩なんですけど、なぜか使わずやっちゃってる時がありませんか?(僕だけか...)サンプル長々と書いてきましたが、ホントにそんなんで短くなんの?という疑いの声が聞こえてきそうなので実例を示そうと思います。上のテクニックを(わざとらしく!)全く使わずに作ると、consoletのソースは以下のようになっちゃいます。昨日貼ったソースのとおり、506文字になります。(Mon)bookmarklet車輪の再生産な匂いがしまくりですが、作ってみました。しても必要だったので...。bookmarkletter.)[説明]実行すると、みたいなのを表示します。runをクリックするとtextarea内のJavaScriptを実行します。(単にevalするだけなので、エラーとかはそのままブラウザに行っちゃいます。エラーが出た時はエラーって言って欲しいのであえてtry~catchしてません。)srcをクリックすると現在のソース(HTML)をtextareaに表示します。(スクリプトで加えた変更とかも反映されたソースのはずです。headとbodyの中身だけですが...)closeをクリックするとコンソール(自分自身)を消します。復活はしないので、使いたい時はもう一度ブックマークレットを実行してください。