Snow-Materia > Arekore-Link-List

はじめに

「あれこれリンクリスト」 と読みます。

ありみかさんのとこナビシート の劣化版みたいなもので、そのページの中にある <link href="*"><a href="*">、 設定次第では <q cite="*">とか <blockquote cite="*">とか、 <div id="*">とか、 それらの一覧を、ページのどっかにリストアップします。

このページで言えば、ページの右上になんか怪しいボタンがあるはず。
マウスでカーソルをずずって持っていくと、なんかでるかと思います。
設定とかくわしい説明はまた後で。

おしらせ

2005/01/02
いろいろバグってましたw どかんと修正~。
12/21
Opera問題修正。 たぶんどのブラウザでも(最近のなら)同じような動作に。
2004/12/20
思いつきで作ってみたので公開。

使い方について

  1. リストブロック (この画面で言えばページの右上のLinkArekoreの部分) にカーソルを持っていくと、グループ名でリストがでます。
  2. そのグループ名にまたカーソルを持っていきましょう。
  3. そのグループでの、ページ内外のリンクのリストがでます。
  4. リンク(普通の<a>リンクです)をクリックすると、そこに飛びます。

使い方について・応用編

設置について

JavaScript
ArekoreLink.js (通常) or ArekoreLink2.js (日本語注釈付)
CSS-Sample
ArekoreLink.css

仕組みについて

どんな風にピックアップ設定できるかをちらり解説。

実際に例を出してやった方がわかりやすいかと思うので、 <blockquote cite="*"><q cite="*"> のリストを作ってみましょう。

まず、既にある部分をコピーして、その下に貼りつけます。(↓な感じ)

// Blockquote
{
    // group-condition
    'group' : '',    // tag-name
    'class' : '',    // class
    'id' : '',    // list-id

    // element-condition
    'tag' : '',    // tag-name
    'href' : '',    // for link-address.
    'term' : '',    // for item-name.
    'title' : '',    // for item.

    // attributes for skip.
    'skip' : {
     }
},

上から順に入力していきます。

'group' : '',

ここにはグループ名をいれます。 [必須] まあ、わかれば何でもいいです。

'group' : 'Quotation-Link', とでも入れておきましょう。

'class' : '',

グループ名を入れる<dt>と グループを入れる<dd>CLASS属性を指定します。

とりあえずどうでもよく書いておきます。 'class' : 'list-group',

'id' : '',

グループ (<dd>) の中の 各項目のリスト (<dd> > <dl>) につけるID属性を指定します。

一応つけますが、これもなきゃないでいいです。 'id' : 'quotation-link',

'tag' : '',

採取するタグの名前を書きます。 [必須]

'tag' : 'LINK|A', などのように書くと、 LINK要素とA要素を同時にピックアップします。

<q> もとりたいので、 'tag' : 'BLOCKQUOTE|Q', と書きます。

'href' : '',

リンクのアドレス (href属性の値) になる、元の要素の属性名を書きます。 [必須]

'href' : 'href|src|cite', などのように書くと、 第一候補のhrefがなかった場合、 第二候補のsrc、 第三候補のcite、 と順番に検索していきます。

ここは<blockquote>なので、当然 'href' : 'cite', ですね。

'term' : '',

項目名とする属性をここに書きます。

これを指定した場合は、各項目のリストは <DL>のリストになり、 指定しない場合は、 <OL>のリストになります。

また、指定した場合は、 この属性の値がない要素はスキップされ、リストに載りません。

これも 'term' : 'id|class|rel|rev', などのように書くと、順番に検索していきます。

ここでは指定しない設定にします。 'term' : '',

'title' : '',

項目とする属性を書きます。
ソースで言うなら、 <a href="*">この属性の値</a> となります。

この属性の値がないときは、 href属性の値が使いまわしされます。
しかしやっぱり、href属性じゃなんだかなあ…、なので、 なるべくtitle属性を書くクセをつけたいものです。

これも 'title' : 'title|alt|id|class', などのように書くと、順番に検索していきます。

まあだいたいは 'title' : 'title', とします。

'skip' : { '' : ['', ''], '' : '' }

スキップしたい要素の、属性名・属性値をペアで書きます。 たぶん一番わかりにくいです(笑)

例えば、<link>要素で、 スタイルシートの要素はスキップしたい、としたらば、 スタイルシートのtype属性はtext/cssなので、 'skip' : { 'type' : 'text/css' } と書けます。

で、もし、RSS の要素もスキップしたい、としたら、 先ほどスタイルシートにtype属性を使ってしまったから、 'skip' : { 'type' : 'application/rss+xml' } と書くことはできません。

つまり、text/cssapplication/rss+xml と 2つ書きたいので、そういうときは、次のように配列形式で書きます。 'skip' : { 'type' : ['text/css', 'application/rss+xml'] }

…という具合で、いくらでも設定できますが、 この中のひとつでもマッチしたらスキップされるのでご用心です。

また、 'skip' : { 'title' : '' } と書くことで、title属性がない場合は その要素をスキップできるようになりました。

長々書きましたが、結局 <blockquote> だと特にスキップしないので、書きません(笑) 'skip' : {}

ややこしいかもですが、 とりあえず 'group''tag''href' だけは忘れずに書いてください。
あとはなきゃないで何とかなりますし、という具合。

ソースについて

このScriptで作られるHTMLソースは、仮想的に以下のようになります。
lin[*]tag_list[*][*]、などは設定した値です。

<lin[tag] id="lin[id]">    -    -    -    -    -    -    -    -    -    - List-Block
    <lin[head_tag] id="lin[head_id]"> lin[head_text] </lin[head_tag]> (?)
    <lin[list_tag] id="lin[link_id]">    -    -    -    -    -    -    -    - List (?)
        <dl>
            <dt class="tag_list[*][class]">    -    -    -    -    -    - List-Group
                tag_list[*]
            </dt>
            <dd class="tag_list[*][class]">
                <dl id="tag_list[*][id]"> (<ul>)    -    -    -    - List-Item
                    <dt>tag_list[*][term]</dt> (?)
                    <dd> (<li>)
                        <a href="tag_list[*][href]">
                            tag_list[*][title]
                        </a>
                    </dd> (</li>)
                </dl> (</ul>)    -    -    -    - / List-Item
            </dd>    -    -    -    -    -    - List-Group
        </dl>
    </lin[list_tag]>    -    -    -    -    -    -    -    - / List (?)
</lin[tag]>    -    -    -    -    -    -    -    -    -    - / List-Block

あとがき

s*m