Hatena::agenda

CSS、HTML、XHTML、XML、DOM、XSLT、XPath、ECMAScript、Python、ウェブユーザビリティ、その他に関連する文書等のリソースを挙げていったりします。より本質的な議論を志向。
注意:Hatena::agendaの更新は終了しています!過去の記事はagenda のホームページよりどうぞ。今後の更新情報の取得は、agendaのフィード(XML/Atom)から。

 | 

2007-06-23 邦訳HTML文書支援#01 ノード間自動リンク用メソッド

最近自分用に色々な英文の邦訳をしていて、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のようにしたほうがいい。面倒くさいからやらないけれども。

 |