はてなブックマークのエントリーページは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
で、このページの場合は
- http://b.hatena.ne.jp/entry/http://chronicle.g.hatena.ne.jp/
- http://b.hatena.ne.jp/entry/3150218
- http://b.hatena.ne.jp/entry?mode=more&url=http://chronicle.g.hatena.ne.jp/
上記2つとはページの構成、読み込むスタイルシート、行間の大きさやスターの有無など、大きく異なるのが注意が必要なポイントです。
具体的に言うと、<ul id="bookmarked_user"> が無い、とか。
せめてそれくらいあればいいのになぁ。
正直レアなケースなので、両方に対応するのは面倒だから見なかったことにする、というのもアリかと思います。私もそうしようかと考えました。
けれど、今回作った Greasemonkey はいずれもブックマーク数が多いときほど必要になるであろう、と考えたので仕方なく対応することに。
あと、もう1つ細かい点としては、ログイン時と非ログイン時の異なる点でしょうか。
非ログイン時だと、主要タグ一覧が表示されずに広告が表示されるとか、概要欄の編集リンクの有無など、地味に違いがあったりします。今回の Greasemonkey ではあまり関係はありませんでしたが。
><