はてなブックマークのエントリーページは3種類あるよ、という話

(厳密にはさらに携帯機器用のページもあるのですが、今回は除外)


Greasemonkey を作るときに、ちょっと困ったので備忘録。




通常はてなブックマークのページというと、例えばこの場合
はてブクロニクル
http://chronicle.g.hatena.ne.jp/
こちらをブックマークしたページは
 ↓
http://b.hatena.ne.jp/entry/http://chronicle.g.hatena.ne.jp/
こういうURLになりますね。


つまり
http://b.hatena.ne.jp/entry/ブックマークされたURL


なのですが、そのページにはこのURLにもアクセスできます
http://b.hatena.ne.jp/entry/3150218
これは、ブックマークに固有のIDが割り振られているからです。
特に Google なんかでブックマークのページがヒットした場合このタイプの URL にヒットすることが多いですね
。なんでそんな仕様に?……というと確か URLに http:// を含んでいると SEO 的に不利だ……とかというのをどこかで見たような気がします(適当な知識)ので、たぶんそういったところが理由なんでしょうか*1


ま、それはともかく
http://b.hatena.ne.jp/entry/エントリーの固有のID
となります。




なので、Greasemonkey

// ==UserScript==
// @name           name
// @include        http://b.hatena.ne.jp/entry/http://*

などとうっかり設定してしまうと、上の例では動作しないので注意するのがまず1点*2


とは言え、

ではページの構成が全く同じなので、それ以外は問題ないですね。




で、問題が次のケース。
http://b.hatena.ne.jp/entry?mode=more&url=http://chronicle.g.hatena.ne.jp/
http://b.hatena.ne.jp/entry?mode=more&url=ブックマークされたURL
おそらく通常あまり目にすることのないページだと思います、ただ例えば1000users以上ブックマークされた記事などの場合、ブックマークしたユーザーが多過ぎるので抜粋して表示していますが、それの全て表示バージョンというか。
ま、具体的にはこちらなどがそのケースですね。

http://b.hatena.ne.jp/entry/http://chronicle.g.hatena.ne.jp/rikuo/20070404




で、このページの場合は

上記2つとはページの構成、読み込むスタイルシート、行間の大きさやスターの有無など、大きく異なるのが注意が必要なポイントです。
具体的に言うと、<ul id="bookmarked_user"> が無い、とか。
せめてそれくらいあればいいのになぁ。


正直レアなケースなので、両方に対応するのは面倒だから見なかったことにする、というのもアリかと思います。私もそうしようかと考えました。
けれど、今回作った Greasemonkey はいずれもブックマーク数が多いときほど必要になるであろう、と考えたので仕方なく対応することに。




あと、もう1つ細かい点としては、ログイン時と非ログイン時の異なる点でしょうか。
非ログイン時だと、主要タグ一覧が表示されずに広告が表示されるとか、概要欄の編集リンクの有無など、地味に違いがあったりします。今回の Greasemonkey ではあまり関係はありませんでしたが。

><

*1:ちなみに、はてなハイクの場合は http://h.hatena.ne.jp/http///example.com/ になっていますね

*2:というか、それ以前にこの設定では http://b.hatena.ne.jp/entry/https://〜もダメになってしまいますが