bleicher: globale knotenerweiterung

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

--
__________________________-

FirefoxMyth
  1. 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

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    1. 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

      --
      __________________________-

      FirefoxMyth
    2. 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)