とにかく落ち着け

<< 戻る   トップ >>

ブラウザのドキュメントエレメントは拡張できない」問題を諦めずに、というか未練たらしくいじっていたら拡張できた。もちろんまともな方法じゃないし、文法上はともかく実装上大きな間違いを犯しているに違いないのだ。しかも、現時点で Fedora 12 上の Firefox 3.5.12 でしか動作確認がとれていない。しかしながら、仕事の関係で正気に戻ってプログラミングの技量維持の時間を終わりにしなくてはいけないのだ。

そもそも、「Webブラウザのドキュメントなどを表す『ホストオブジェクト』はコンストラクタやプロトタイプを持たない」のであれば、偽者のコンストラクタを作ってはどうか、というのが基本的な発想である。

// 偽者の HTMLDivELement コンストラクタ
function HTMLDivElement() {
	return document.createElement( 'div' );
}

そんな偽者にだまされてうまく動くわけがないから、基本的には「ダメモト」でやってみたのだ。そしてこの HTMLDivElement を拡張する。

// 偽者を使ってクラスを拡張
function DivElement() /* extends HTMLDivElement */ {
	// this.superclass('div');
	HTMLDivElement.call( this );
	this.style.backgroundColor = '#00ff00';
	this.innerHTML = 'Hello, World!';
}

DivElement.prototype = new HTMLDivElement();
DivElement.prototype.constructor = DivElement;
// DivElement.prototype.superclass = HTMLDivElement;

拡張して作られた DivElement は (今のところ) 期待された通りに動作する。本当に拡張クラスになっているのかはもう少し考査する必要があるし、何より Windows Vista 上の Firefox 3.6.3 ですら動作しない。で、いろいろと考えなくてはならないのだが、今は他にすることがあるので、とにかく落ち着け。


作成: 2010-10-27 10:59:54.0更新: 2010-10-27 11:45:40.0
http://museo-anonimo.jp/nanban/?id=927,http://museo-anonimo.jp/nanban/tr/927