Safari3で楽になったHTMLElement Prototyping

今までのSafariではHTMLElement Prototypingをするのに色々とハックする必要がありましたがSafari3からは直球でHTMLElementが実装されていてハックできます。

実装されているHTMLElement系のオブジェクト

JavaScriptで機械的に書き出したので漏れがあるかも…。*1

HTMLFontElement,HTMLBodyElement,HTMLScriptElement,HTMLDivElement,HTMLLabelElement,HTMLIsIndexElement,HTMLElement,HTMLSelectElement,HTMLModElement,HTMLParamElement,HTMLHeadingElement,HTMLMetaElement,HTMLBaseFontElement,HTMLDListElement,HTMLParagraphElement,HTMLFormElement,HTMLDocument,HTMLPreElement,HTMLButtonElement,HTMLInputElement,HTMLOptGroupElement,HTMLAppletElement,HTMLMapElement,HTMLStyleElement,HTMLLinkElement,HTMLBRElement,HTMLAnchorElement,HTMLAreaElement,HTMLBaseElement,HTMLDirectoryElement,HTMLFieldSetElement,HTMLHeadElement,HTMLHRElement,HTMLHtmlElement,HTMLImageElement,HTMLLegendElement,HTMLLIElement,HTMLMenuElement,HTMLOListElement,HTMLOptionElement,HTMLQuoteElement,HTMLTextAreaElement,HTMLTitleElement,HTMLUListElement,HTMLCanvasElement,

サンプル

<html>
<head>
<script>
HTMLElement.prototype.foo = function(){
    alert(this.getAttribute('id'));
};
</script>
</head>
<body>
<div id="foo"></div>
<script>
document.getElementById('foo').foo();
</script>
</body>
</html>

*1:for(i in this){ if(i.indexOf('HTML') >= 0){document.write(i, '<br />'); }}