レス番号リンクについての調査

概要

専用ブラウザの大きな特徴として、レス番号にカーソルを合わせることによるポップアップ、及びクリックによるジャンプがあります。しかし、その基礎となるhref属性の値はブラウザによって異なっています。

なお、今回調査したのは、2ちゃんねるについてのみなので、外部板については異なる形式になっている場合があります。

属性値の比較

>>1 (*1)>1 (*2)
hrefの値targetの値hrefの値targetの値
かちゅ絶対・旧式_blank絶対・旧式_blank
A Bone相対・独自_blank相対・独自_blank
ゾヌ2絶対・新式 _blank絶対・旧式_blank
ギコ 変更なし _blank相対・旧式_blank
Live 絶対・独自 絶対・独自
OpenJ #1 _top #1_top
Acty re:1 re:1
twin ../1 _blank../1,../1_blank
  • (*1):dat上に最初から記述されているもの
  • (*2):ブラウザがリンクを追加するもの

ブラウザごとの詳細

かちゅ〜しゃ

>>1
<a href="http://domain/test/read.cgi?bbs=bbs&key=key&st=1&to1&nofirst=true" target="_blank">1</a>
>1
<a href="http://domain/test/read.cgi?bbs=bbs&key=key&st=1&to1&nofirst=true" target="_blank">1</a>

かちゅ〜しゃについては、読み込む段階ではなく、datに保存する段階で上記のように書き換えているという点に大きな特徴がある。これもあってdatは他ブラウザと非互換となる。

対応するリンクを全て、QUERY形式の絶対アドレスに書き換えている。このリンクのショートカットをコピーすることで、そのままブラウザでも開くことが可能であるため、書き換えはそのためかもしれない。

かちゅ〜しゃでは、上記の形式で記述されるものの、どうやら必ずしもこの形式に限定されるわけではないようである。(kageのおかげ?)たとえば以下のような形式であっても、問題なく動作する。target属性を省くことができる。

<a href="http://domain/test/read.cgi/bbs/key/1">1</a>

A Bone

>>1
<a href="../test/read.cgi?bbs=bbs&key=key.dat&st=1&to=1&nofirst=true">1</a>
>1
<a href="../test/read.cgi?bbs=bbs&key=key.dat&st=1&to=1&nofirst=true">1</a>

対応するリンクを全て、QUERY_STRING形式の独自の相対アドレスに書き換えている。後述するように.datがなくても動作するにも拘らず、.datが入る理由には何かあるに違いない。

A Boneでは、上記の形式で記述されるものの、どうやら必ずしもこの形式に限定されるわけではないようである。たとえば以下のような形式であっても問題なく動作する。target属性を省くことはできない。

<a href="../test/read.cgi/bbs/key/1" target="_blank">1</a>
<a href="../test/read.cgi?bbs=bbs&key=key&st=1&to=1&nofirst=true" target="_blank">1</a>

ホットゾヌ2(β13)

>>1
<a href="http://domain/test/read.cgi/bbs/key/1" target="_blank">1</a>
>1
<a href="http://domain/test/read.cgi?bbs=bbs&key=key&st=1&to1&nofirst=true" target="_blank">1</a>

β13からはdat上に書き込まれているものについては PATH_INFO形式の絶対アドレスに書き換え、追加する場合には QUERY_STRING形式の絶対アドレスに書き換えている。

ホットゾヌ2では、必ず上記のいずれかの形式で作成しなければならない。target属性を省くことはできない。

ギコナビ

>>1
<a href="../test/read.cgi/bbs/key/1" target="_blank">1</a>
>1
<a href="../test/read.cgi?bbs=bbs&key=key&st=1&to=1&nofirst=true" target="_blank">1</a>

dat上に書き込まれているものについてはそのままで、追加する場合にのみ QUERY_STRING形式の相対アドレスに書き換えている。

ギコナビでは、上記の形式で記述されるものの、target属性を省くことができる。

<a href="../test/read.cgi/bbs/key/1">1</a>
<a href="../test/read.cgi?bbs=bbs&key=key&st=1&to=1&nofirst=true">1</a>

Live2ch

>>1
<a href="http://jumpres/read.cgi/bbs/key/1" target="_blank"><a href="http://jumpres/1">1</a></a>
>1
<a href="http://jumpres/1">1</a>

dat上に書き込まれているものについては../test/をhttp://jumpres/に変換し、さらにその内側に<a href="http://jumpres/1">1</a>をつけている。HTML的には結構まずい。

OpenJane

>>1
<a href="#1">1</a>
>1
<a href="#1">1</a>

対応するリンクを全て、内部リンクに書き換えている。HTMLとして保存した場合に、内部リンクが機能することに大きなメリットがある。

なお、1.9.0あたりから、target属性にtopが指定されるようになっているが、#つきリンクへの対応の副作用なので、省いても全く問題ない。

Acty

>>1
<a href="re:1">1</a>
>1
<a href="re:1">1</a>

対応するリンクを全て、re:+レス番号に書き換えている。

twintail

>>1
<a href="../1" target="_blank">1</a>
>1
<a href="../1" target="_blank">1</a>

対応するリンクを全て、一階層上+レス番号に書き換えている。>1というような全角数字については../1というように属性値に全角が入る。target属性は省くことができない。

考察

ブラウザでのリンクの判定がかかわる問題であり、どれかに統一することは無謀である。ただ、datにあるものも追加するものも書き換えてしまうのであれば、OpenJaneのように#1というような形に書き換えるのが最も妥当であると思われる。