globale knotenerweiterung
bleicher
- html
Grüße,
die Frage gehört von AUführung her wohl zu JS, aber betrifft HTML, hoffentlich passt es so:)
ist es möglich (mittels JS?) sämtliche bestimmter Objekte/Elemente um Eigenschaft/Funktion zu erweitern?
zB sämtlichen textNode Eigenschaft .lesbarkeit
sodass darauf über element.lesbarkeit="" o.ä. zugegriffen werden kann?
und das allen Elementen dokumentweit oder sämtlichen ElementKnoten die funktion ".hüpf()?
ist es theoretisch möglich? alternatives documenttyp vllt?
MFG
bleicher
Hi,
die Frage gehört von AUführung her wohl zu JS, aber betrifft HTML, hoffentlich passt es so:)
JavaScript ist der passende Themenbereich.
ist es möglich (mittels JS?) sämtliche bestimmter Objekte/Elemente um Eigenschaft/Funktion zu erweitern?
Ja, über prototyping.
zB sämtlichen textNode Eigenschaft .lesbarkeit
sodass darauf über element.lesbarkeit="" o.ä. zugegriffen werden kann?
Zusätzliche Eigenschaften kannst du jedem HTML-Elementobjekt in JavaScript auch so verpassen. (MicroSoft nennt sowas expando properties.) Allerdings kannst du dir von denen keinerlei zusätzliche Funktionalität erwarten. Setzen/Abfragen ist aber problemlos möglich.
und das allen Elementen dokumentweit oder sämtlichen ElementKnoten die funktion ".hüpf()?
S.o., über prototyping. Allerdings kann es der IE bei HTML-Elementobjekten m.W. immer noch nicht.
MfG ChrisB
Grüße,
Ja, über prototyping.
danke, googeln kann ich nun ^^
S.o., über prototyping. Allerdings kann es der IE bei HTML-Elementobjekten m.W. immer noch nicht.
oooh -wie schaaade :)
MFG
bleicher
Allerdings kannst du dir von denen keinerlei zusätzliche Funktionalität erwarten. Setzen/Abfragen ist aber problemlos möglich.
Es gibt Getter und Setter in allen Browsern. Im IE mit ECMAScript-5-konformer Syntax, in den restlichen mit einer proprietären (__defineGetter__ und __defineSetter__).
Allerdings kann es der IE bei HTML-Elementobjekten m.W. immer noch nicht.
IE kann es ab Version 8 Beta 2 von August 2008.
http://msdn.microsoft.com/es-es/library/dd282900(VS.85).aspx
http://msdn.microsoft.com/en-us/library/dd229916(VS.85).aspx
http://msdn.microsoft.com/en-us/library/dd347057(VS.85).aspx
http://msdn.microsoft.com/en-us/ie/dd578303.aspx
Browserübergreifendes Beispiel:
<div id="foo">Some text</div>
<script>
[code lang=javascript](function (global) {
function extendElement (property, getter, setter) {
var prototype = (global.HTMLElement || global.Element).prototype;
if (Object.defineProperty) {
Object.defineProperty(prototype, property, { get : getter, set : setter });
} else if (prototype.__defineGetter__ && prototype.__defineSetter__) {
prototype.__defineGetter__(property, getter);
prototype.__defineSetter__(property, setter);
} else {
throw "Getter and setter not supported";
}
}
extendElement("mllyRed", function () {
return (this.currentStyle || global.getComputedStyle(this, null)).color;
}, function (value) {
this.style.color = value;
});
var zeFoo = global.document.getElementById("foo");
alert(zeFoo.mllyRed);
zeFoo.mllyRed = "blue";
})(window);
</script>[/code]
Funktioniert in allen aktuellen Browsern (Firefox 3.6, Safari 4, IE 8, Chrome 4, Opera 10.10)