私はメタ男くんなので、さらにメタ、すなわちこういうmeta bookmarkletを簡単に作る方法を考えてみた。
Life is beautiful: 複数のbookmarkletの機能を一つにまとめた「シオレット」そこで、いくつかのBookmarkletの機能を一つにまとめた、メタBookmarkletを自分のために作ったのだが、せっかくなので、ここで公開。
まずは、メタブックマークレットそのもの。ここでは選択されたテキストに対して何かをするbookmarkletを用意。
とりあえずSafariとFirefoxとOperaで動作確認。IEの動作確認きぼんぬ。
[追記:IE6でも動くようです。報告ありがとうございます]
しかし、主題はソースの方。
まずはbookmarklet、というよりJS Loader。
無名関数に、引数としてloadしたいJSのURIを指定している。これなら手で編集するのも容易だ。
次に、LoadされるJS本体。
[追記:Operaのためにiframeやめてソース直張りにしました]
mbm-selectedtext.js(function(json){ var s = document.selection ? document.selection.createRange().text : document.getSelection ? document.getSelection() : window.getSelection ? window.getSelection() : null; var menu = document.createElement('div'); menu.style.position = 'absolute'; menu.style.top = 0; menu.style.border = 'outset 2px'; menu.style.backgroundColor = 'yellow'; menu.innerHTML = s; var ul = document.createElement('ul'); for (var p in json){ var a = document.createElement('a'); a.setAttribute('href', 'javascript:(' + json[p] + ')(\'' + s + '\')'); a.innerHTML = p; var li = document.createElement('li'); li.appendChild(a); ul.appendChild(li); } menu.appendChild(ul); document.body.appendChild(menu); })({ "Search Google(en)" : function(s){ window.open( 'http://www.google.com/search?hl=en&q=' + encodeURIComponent(s), '_blank' )}, "Google(en)で検索" : function(s){ window.open( 'http://www.google.co.jp/search?hl=ja&q=' + encodeURIComponent(s), '_blank' )}, "Search Wikipedia(en)" : function(s){ window.open( 'http://en.wikipedia.org/wiki/Special:Search?search=' + encodeURIComponent(s), '_blank' )}, "Wikipedia(ja)で検索" : function(s){ window.open( 'http://ja.wikipedia.org/wiki/Special:Search?search=' + encodeURIComponent(s), '_blank' )} });
見ての通り、メニューをレンダリングする部分を無名関数とし、それにメニューをjson形式で指定する形にしてある。これなら、付け加えたい機能はjsonの部分をカスタマイズするだけだ。
Enjoy!
Dan the Javascripting Metaphilia
このブログにコメントするにはログインが必要です。
さんログアウト
この記事には許可ユーザしかコメントができません。