l'essentiel est invisible pour les yeux

Tuesday, January 08, 2008

[Javascripts] Element.addMethodsByTag

This code requires prototype.js 1.6.x

特定のElementにメソッドを追加します。
以下の例は、canvasタグにキャンバス全体を初期化するメソッドを追加します。(HTMLCanvasElement#clear)


// Add arbitrary methods as HTML#{tag}Element instance methods
Element.addMethodsByTag = function(aTag, aMethods) {
if(aMethods.constructor == Object) {
var methods = new Object();
methods[aTag.toUpperCase()] = aMethods;
Object.extend(Element.Methods.ByTag, methods);
Element.addMethods();
}
};

Element.addMethodsByTag('canvas', {
clear: function(element) {
if(element.getContext) {
var ctx = element.getContext('2d');
ctx.clearRect(0, 0, element.getAttribute('width'), element.getAttribute('height'));
}
return element;
}
});



特定のHTML#{tag}Elementごとに、共有されるクラス変数を定義する事も出来ます。

Element.addMethodsByTag('canvas', (function() {
var someValue;
return {
// ...
};
}})());