最近自分用に色々な英文の邦訳をしていて、omitしまくりのフラットなHTML4.01 Transitionalで記述している。ページ内のアンカーとか、目次とか、できる限り計算機に任せて邦訳作業に専念したい。
Node.prototype.linkTo = function(node) {
Node.ID = Node.ID || generateId();
var a = document.createElement("A");
a.href = "#" + (node.id || (node.id = Node.ID.next()));
this.parentNode && this.parentNode.insertBefore(a, this);
a.appendChild(this);
return a;
function generateId(){
var id = 0;
while(true)
yield "purl_org_jintrick" + id++;
}
}
ツリーを辿って見出しに対してアンカーリストの目次を作成したり、全CITE要素に対して同一のtextContentを持った見出し等々にリンクしたりするのに使う。Block Level Element や A ElementでこのlinkToメソッドを使うとinvalidになるから、例えばHTMLAnchorElement.prototype.linkTo = function(){};
のようにオーバーライドするか、メソッド内でthis instanceof HTMLAnchorElement && throw foo
のようにしたほうがいい。面倒くさいからやらないけれども。