トップ    編集凍結解除 差分バックアップ添付複製名前変更リロードPages that link to here   新規一覧単語検索最終更新
   最終更新のRSS

FrontPage

Webブラウザを使っていると、自分専用でちょっとした便利な機能が欲しくなることがありませんか。それを作るには色々な方法があるけれど、とりあえずBookmarklet(ブックマークレット)が簡単なんじゃないか。ということで、作り方を調べてみました。

ここでは、簡単な「Hello World」から初めて、選択したテキストをYahoo!で検索するといった検索系ツールまで作成しています。また、ブログ用にhtmlコードを生成するサンプルコードもあります。

ただし、自分用にFirefox3で使える奴を作っているため、IEやOperaでは動作するか不明です。また、Bookmarkletを作るには、少しばかりWebサイトとJavascriptの知識が必要になります。それは、ここでは説明していません。

Bookmarkletって何さ

Bookmarklet(ブックマークレット)は、ブラウザに追加できる簡単なプログラム。ブックマーク(お気に入り)において使う小さなプログラムなので、こんな名前になりました。

たとえば、ドラッグで選択した文字をYahoo検索したり、Wikipediaや英和辞書で調べたり、今見ているWebページをちょっと加工したり、なんてことができます。

最近のWebサービスでは、サービスを便利にするBookmarkletを配布していることもあります。Bookmarklet(ブックマークレット)で検索すると、いろいろ見つかります。

Firefoxだと、JavascriptとXULを使って、もっとすごい拡張機能を作れる(らしい)。だけど、いきなりそれは難しいので、こんなところから。

事前に、ブックマークツールバーを表示しておきましょう。ここには、使用頻度の高いブックマークを登録できます。「表示」-「ツールバー」-「ブックマークツールバー」で表示されます。

ドラッグ&ドロップでブックマークツールバーにリンクを追加できるので、そこに使いたいBookmarkletをボタンとして、おいておくと便利です。

試してみよう

さて、実際にBookmarkletを使ってみましょう。Bookmarkletは、ブックマークを利用した機能なので、リンクの仕組みを活用します。

まず、次の「Bookmarklet Test」リンクをクリックしてみてください。Yahoo Japanへ移動します。ここには、Yahooへのリンクが貼ってあります。

Firefoxで、このリンクをブックマークバーまでドラッグすると、そこに「Bookmarklet Test」というリンクボタンができあがります。このボタンをクリックすれば、どのWebページを表示していても、Yahoo!に移動できます。

リンクボタンをBookmarkletにするには

では、この「Bookmarklet Test」のリンクボタンを書き直して、Bookmarkletを作ってみましょう。

Bookmarkletでは、このリンクボタンのリンク先(URL)に、Javascriptによるプログラムを設定します。Bookmarkletは、1行で書かれたJavascriptのプログラムです。リンクボタンのリンク先として、次のように書くと、クリックしたときにこのプログラムが実行できます。

javascript:(実際の処理);

リンクボタンにBookmarkletを登録するには、右クリック-「プロパティ」を選択して、URL欄に入力します。

Bookmarkletの配布サイトなどでは、Bookmarkletが設定済みのリンクが表示されているので、それを直接ブックマークツールバーにドラッグ&ドロップしても大丈夫です。ここでは、技術的な理由でそれができませんでした(Pukiwikiで直接Bookmarkletを配布する方法があるかな、ソースをいじらないとダメか)。

Hello Worldを表示させる

Hello Worldをダイアログボックスで表示します。上記の手順で、ブックマークツールバーの「Bookmarklet Test」のURL欄に次のプログラムをコピペしてください。

javascript:alert("hello%20world");

日本語も表示できます。

javascript:alert("世界の皆さん、コンニチハ");

Hello Worldを別ウィンドウで表示させる

javascript:var%20d=window.open().document;
d.writeln('<textarea%20rows=1%20cols=40>'+'世界の皆さん、コンニチハ'+'</textarea>');

改行を削除してからコピペしてください。

選択したテキストを表示させる

ダイアログで表示

javascript:var%20d=document;
var%20tx=d.selection?d.selection.createRange().text:d.getSelection();
alert(tx);

別ウィンドウで表示

javascript:var%20d=document;
var%20tx=d.selection?d.selection.createRange().text:d.getSelection();
var%20subw=window.open().document;
subw.writeln('<textarea%20rows=1%20cols=40>'+tx+'</textarea>');

改行を削除してからコピペしてください。

選択したテキストをYahoo!で検索する

検索結果を別ウィンドウで表示します。

javascript:var%20d=document;
var%20tx=d.selection?d.selection.createRange().text:d.getSelection();
var%20subw=window.open('http://search.yahoo.co.jp/search?p='+tx).document;

改行を削除してからコピペしてください。

検索系ツール

ここまでくれば、あとはそのバリエーション。いくつか自分用に作った奴をおいておきます。

Wikipediaで検索

javascript:var%20d=document;
var%20tx=d.selection?d.selection.createRange().text:d.getSelection();
var%20subw=window.open('http://ja.wikipedia.org/wiki/'+tx).document;

英辞郎で検索

javascript:var%20d=document;
var%20tx=d.selection?d.selection.createRange().text:d.getSelection();
var%20subw=window.open('http://eow.alc.co.jp/'+tx+'/UTF-8/?ref=sa').document;

Web更新用

現在表示しているページから、ブログやWikiに貼り付ける情報を作成

現在表示しているページへのリンクhtmlタグを作成

javascript:(function(){function%20o(s){var%20d=window.open().document;
d.writeln('<textarea%20rows=15%20cols=80>'+s+'</textarea>');d.close()}var%20prefix='';
var%20suffix='';var%20contents=document.title;var%20target='_blank';
o(prefix+'<a%20href=\''+location.href+'\'%20target=\''+target+' \'>'+contents+'</a>'+suffix);})();

現在表示しているFlickrページから写真貼り付け用htmlタグを作成2

javascript:(function()%20{var%20url=location.href;
%20if%20(url.match(/http:\/\/(www.)?flickr.com\//))%20{
%20window.location%20='http://seanmcg.com/flickrtools/html.php?url='+url;%20}
%20else%20{%20alert('You\'re%20not%20on%20Flickr!');%20}%20})()

現在表示しているFlickrページから写真貼り付け用htmlタグを作成1

●注:Flickrのタグ構成が変わっていて、うまく動きません(2009/04)

javascript:document.body.innerHTML.match(/property=\%22dc:title\%22>(.*?)<\/h1>
[\s\S|.]*?<img%20src=\%22(.*?)\.jpg\?v[\s\S|.]*by%20<a%20href=%22\/photos\/(.*?)\/%22/);
document.body.innerHTML=%22<textarea%20cols='100'%20rows='10'>
<div%20style=\%22float:right;margin:5px%200px%2010px%2010px;border:dotted%201px%20#aaaaaa;padding:5px\%22>\n
<a%20href=\%22%22+document.URL+%22\%22%20target=\%22_blank\%22>
<img%20src=\%22%22+RegExp.$2+%22_m.jpg\%22%20style=\%22border:none\%22></a>\n
<a%20href=\%22%22+document.URL+%22\%22%20target=\%22_blank\%22>%22+RegExp.$1+%22</a>
<br%20/>\nPhoto%20by%20<a%20href=\%22http://www.flickr.com/photos/%22+RegExp.$3+%22/\%22%20target=\%22_blank\%22>%22+RegExp.$3+%22</a>\n
</div>\n\n<br%20clear=\%22all\%22/></textarea>%22

現在表示しているページへのPukiwikiタグを作成

javascript:(function(){function%20o(s){var%20d=window.open().document;
d.writeln('<textarea%20rows=15%20cols=80>'+s+'</textarea>');d.close()}
var%20prefix='';var%20suffix='';var%20contents=document.title;var%20target='_blank';
o(prefix+'-[['+contents+':'+location.href+']]'+suffix);})();

感想

というわけで、さらにすごい奴を作りたいならXULに挑戦しないとネ。

参考資料

トップ    編集凍結解除 差分バックアップ添付複製名前変更リロードPages that link to here   新規一覧単語検索最終更新
   最終更新のRSS
Last-modified: 2010-02-21 (日) 03:21:59 (195d)