[javascript]ブックマークレット つくメモ

世間に良くある図書館検索のブックマークレットを作ったので、メモ

1.アマゾンのURLからISBNを取り出す。
例えば、ヘルマンヘッセのデミアンのページを開いてみると、下記のようなURLで表示される。
http://www.amazon.co.jp/%E3%83%87%E3%83%9F%E3%82%A2%E3%83%B3-%E6%96%B0%E6%BD%AE%E6%96%87%E5%BA%AB-%E3%83%98%E3%83%83%E3%82%BB/dp/4102001026/
商品ページの中に、ISBNが記述されているので、これを取り出すようなjavascriptを書くと、

var isbn = document.location.href.match(/\/(\d+)\//)[1]

このコードは、webページのURLで、スラッシュ(/)で囲まれている数字を取り出すものなので、
アマゾンのページで実行すれば、isbnを取得することができると考えました。

2.図書館の検索ページから、isbnを検索する方法を考える。
今回は地元の鳥栖市民図書館(http://www.library-tosu.jp/)を検索したいので、ここの図書検索ページ(http://www.library-tosu.jp/search/tosken.html)から検索方法を考えてみました。

試しにISBNを12345678と入力して検索してみると、次のURLのページから検索結果が表示されます。

http://www.library-tosu.jp/search/toslist.asp?tilandor=1&tilkey1=&tilkey2=&tilkey3=&autandor=1&autkey1=&autcod1=&autkey2=&autcod2=&autkey3=&autcod3=&autpos=1&pubkey1=&pubcod1=&kenkey1=&kencod1=&bunkey1=&isbnkey1=12345678&syuyyy1=&syummm1=&syuyyy2=&syummm2=&dspcnt=10&sort=1&x=53&y=16&pg=0&style=10&seq=
これから、ISBNから検索するWEBページは、下記の検索から求められそう。
http://www.library-tosu.jp/search/toslist.asp?isbnkey1={isbn}

実際にヘルマンヘッセのデミアンのISBN 4102001026で、検索ページを開くことができる(http://www.library-tosu.jp/search/toslist.asp?isbnkey1=4102001026)ので、これで準備は整ったと思います。

3.実装。
1,2で準備したコードを実装してみると、こんな感じ

(function(){
   var isbn = document.location.match(/\/(\d+)\//)[1];
   var tosuLib = "http://www.library-tosu.jp/search/toslist.asp?isbnkey1="+isbn;
   window.open(tosuLib);
})();

これを1行でまとめて、改行はなくして、空白は%20に置き換えて、こんな感じ。

javascript:(function(){var%20str=document.location.href.match(/\/(\d+)\//)[1];var%20tosuLib="http://www.library-tosu.jp/search/toslist.asp?isbnkey1="+str;window.open(tosuLib);})();

最後に、適当なリンクを作ってみて、ブックマークする。

<a href='javascript:(function(){var%20str=document.location.href.match(/\/(\d+)\//)[1];var%20tosuLib="http://www.library-tosu.jp/search/toslist.asp?isbnkey1="+str;window.open(tosuLib);})();'>鳥栖図書館ブックマークレット</a>

ということで、初歩の初歩を練習してみました。