icho にデフォルトで搭載される予定らしい MetadataManipulator について。
とりあえず基本的に icho に依存しないので自分のサイトで実験することにする。Javascript 入れていれば左上になんか出てるはず。たぶん。
どこまで決めうちしていいか考え中なので、いまのところ MetadataManipulator 自体はソース生成しかやってない。ピョコピョコさせたり、CSS 的に欲しい要素を補完するのも外側。
link 要素の出現順に何も考えずにソース生成すると CSS が適用しずらいのでいくつか MetadataManipulator の外側で修正してある。内側に入れるか悩む。入れるんだろうけどどうやって入れるか悩む。
- あんまり役に立たない。next, prev はいいけど……
- in-page heading が役に立ちそうだけどうまいことナビゲーション生成するのがめんどい。汎用性云々。ながったらしいし。h2 だけ抽出とかにすればいいのか。
- 実装が定まらない。クラスっぽくするかモジュールっぽくするか。
- マルチリンガルじゃない。"in-page heading" っていう文字列を埋め込んでる。"ja-jp,ja;q=0.8,en-us;q=0.5,en;q=0.3" とかいう文字列を優先順位高い順に配列に突っ込む関数は書いたけど、どの時点で実行するか迷う。
- あんまりときめかない。
# IE は CSS の問題があるけど本質じゃないのでとりあえず放置
var mmul = document.getElementById("MetadataManipulator-Local-RelatedLinks-Dd").childNodes[0]; var fill = function (linkName) { var ret = getElementsByClassName("MetadataManipulator-" + linkName, "li", mmul); if (ret.length < 1) { ret = document.createElement("li"); ret.className = "MetadataManipulator-" + linkName; ret.appendChild(document.createTextNode(linkName)); } else { ret = ret[0].parentNode.removeChild(ret[0]); } return ret; } // 順番を保証・これ以外の rel は copyright の次以降に。 var standard_link_rel = ["start", "prev", "next", "contents", "index", "glossary", "help", "copyright"]; var links = {}; standard_link_rel.each (function (i) { links[i] = fill(i); }); standard_link_rel.eachWithIndex (function (i, index) { mmul.insertBefore(links[i], mmul.childNodes[0+index]); }); with (mmul.parentNode) { style.left = "-201px"; if (document.all && document.attachEvent) mmul.parentNode.addEventListener = document_addEventListener; addEventListener("mouseover", function (e) { style.left = "0px"; }, true); addEventListener("mouseout", function (e) { style.left = "-201px"; }, true); }
ながったらしい CSS との組み合わせです。see base.css