簡単な記述でアサマシ
Posted at 2006-08-06T17:34:00+09:00 in Coding
アサマシするにははてなダイアリーのisbn/asin記法が最強。比較的環境を選ばずに、ああいったソラでも打てるフォーマットでアサマシできれば良さそうだなというわけで作ってみた。面倒かなとか思ったけど、助言が多かったので結構簡単だった。
結果として、複数のアサマシも可能だとかそんな感じのサンプルが出来上がった。アクション!
具体的には、アサマシHTMLコードを挿入したい場所に、
<script type="text/javascript"
src="http://example.com/asamashi.js#{ASINコード}"></script>
こんな感じできれば良いかなというイメージで考え始めた。
script要素のsrc属性に記述されたJavaScriptファイルのURLに引数を付けて実現している。引数の取得の方法はscript.aculo.usの動的ロードの仕組みから。script.aculo.usがそういったテクニックを使っていることはまららんに教えて貰った。簡単に説明すると、
script要素を列挙
- それぞれの
src属性を調査
- 自分自身(asamashi.js)に引数を渡しているかどうか調査
- 渡されていた場合は拾って変数に格納
ということ。これで上記のような記述でASINコードが拾える。ちょっとしたコードの追加ではてなのisbn/asin記法のようなdetailとかimageみたいなのに対応するのも簡単そう。
与えられたASINコードのデータを取得しHTMLにするのは、labs.hail2u.net/amazon/なんかと一緒なので割愛。
書き出しはdocument.writeだとHTML全体が置き換わってしまったので、このままではムリ。これもまららんの助言で記述を、
<script type="text/javascript"
src="http://example.com/asamashi.js#{ASINコード}"></script>
<div id="asamashi-{ASINコード}"></div>
として、挿入すべき場所を明示してやることにした。これでdocument.getElementById('asamashi-{ASINコード}').innerHTMLにぶち込むだけということになる。
簡単な記法と言っても結構打つのはツライとかいう。ASINコード以外をIMEの辞書に「アサマシ」とでも登録すれば楽かも?
追記
この機能を実際に利用するには、asamashi.jsを入手した上で自分のアソシエイトIDに書き換え(できればAccess Key IDも)てどこかにアップロードする必要があるなど、ちょっと色々ある。今のところ誰でも使えるようには作ってない(prototype.jsに依存してたりとか自前の変なライブラリに依存してたりとか)ので、もし使ってみようかなとか改造してみようかなとか思った人は、気をつけること。
Weblog archives
by Month
- October, 2006 (9)
- September, 2006 (23)
- August, 2006 (31)
- July, 2006 (8)
- October, 2005 (13)
- September, 2005 (24)
- August, 2005 (26)
- July, 2005 (2)
- June, 2005 (2)
- May, 2005 (13)
- April, 2005 (30)
- March, 2005 (33)
- February, 2005 (13)
- January, 2005 (10)
- December, 2004 (28)
- November, 2004 (27)
- October, 2004 (25)
- September, 2004 (38)
- August, 2004 (52)
- July, 2004 (45)
- June, 2004 (41)
- May, 2004 (48)
- April, 2004 (36)
- March, 2004 (51)
- February, 2004 (55)
- January, 2004 (63)
- December, 2003 (46)
- November, 2003 (63)
- October, 2003 (92)
- September, 2003 (61)
- August, 2003 (93)
- July, 2003 (57)
- May, 2003 (5)
- April, 2003 (35)
- March, 2003 (35)
- February, 2003 (37)
- January, 2003 (62)
- December, 2002 (32)
This page was last modified on 2006-08-30T13:30:54+09:00 (in 0.119 secs).