閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

「このページに言及」で自動挿入されるリンクをはてな記法にしてみたい

先の記事に同意を頂いたこともあり(id:ha-tan:20050728)、なんとなくはてな記法でリンクを張るブックマークレットを作ってみようかと思ったのですが、あのハイパーリンクの挿入は、はてなダイアリーのサーバ側で実装されているらしく難しそうなので断念しました。

どうやら http://d.hatena.ne.jp/refer のクエリ(GET)に cite=http://hogehoge/ を渡してやると、 http://hogehoge/ へのリンクを勝手に作成して挿入してくれる模様。つまり、ダイアリ側で勝手に突っ込む文字列を A 要素でマーク付けしたものではなくてはてな記法で書かれたものに変更してもらわないといけない。ユーザ側では手も足も出せないので、これもはてなアイデア行きでしょうか。

ただ、絶対無理、というわけではなくて、 http://d.hatena.ne.jp/wata_d/edit?appendbody=hogehoge みたいなアドレスにアクセスすれば、 appendbody 以降の文字列をテキストエリアに挿入してくれるので、これを使えばはてな記法でのリンク挿入も一応はできます。しかしこれだとアカウント名の部分を適宜変更して貰わなければならず、汎用性に欠けてしまうのでかなりいまいちです。

javascript:d=document;w=window;function%20enc(s){return%20encodeURIComponent?encodeURIComponent(s):encodeURI(s);}if(d.selection){q=d.selection.createRange().text;}else%20if(d.getSelection){q=d.getSelection();}else%20if(w.getSelection){q=w.getSelection();}void(w.open('http://d.hatena.ne.jp/wata_d/edit?appendbody=['+enc(location.href)+':title='+enc(d.title)+']','_self',''));

上のコードの wata_d の部分をアカウント名にしてブックマークに突っ込めば動くと思います(多分)。しかし、これだと任意のテキストを選択して実行した時に選択中のテキストを blockquote で括ってくれるといった便利機能が動かないですしトラックバックにも対応していないので(トラックバックはやればできるかも)、実用的ではないですね。

なお上記コードと、ダイアリの動きの推測に関してははてなツールバーのページにあった「このページに言及」ブックマークレットを参考にしました。参考にしたというかコードに関してはぱくって少しいじっただけです。 Javascript なんて書いたこと無いので一からなんてとても書けませんので。