ERLEDIGT
NEIN
NEIN
ANTWORTEN
17
17
ZUGRIFFE
596
596
EMPFEHLEN
-
07.02.12 20:12 #1
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.960
Hallo Tutorianer,
ich fragte mich gerade, ob der Chrome einfach keine selbst definierten Elemente erkennt oder erkennen will, oder ob ich nicht noch etwas vergessen habe als ich mein eigenes Objekt definierte. Folgendes habe ich bereits:
Wenn ich jetzt ein solches Template-Element in meinem Quelltext platziere und aufrufe, dann gibt mir der Chrome als Elementyp HTMLUnknownElement aus. Ebenso kann ich nicht auf die Eigenschaft content zugreifen. Gleiches ist der Fall, wenn ich ein Element mit document.createElement('template') erstelle.Code Javascript:1 2 3 4
HTMLTemplateElement = { content: null, } HTMLTemplateElement.prototype = HTMLElement;
Übersehe ich da etwas? Vielleicht muss man die Elemente auch vorher mit einer Methode registrieren, damit diese verfügbar sind.Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
08.02.12 02:18 #2
Laut meinem Test in JSFiddle* kann man mit JS das HTML von einem selbst definierten Html Element lesen.
Soll dein Element sich anders als ein reguläres Html Element verhalten?
* http://jsfiddle.net/wfykP/
-
08.02.12 02:22 #3
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.960
Ja, es soll noch andere Attribute erhalten. Deshalb ist das etwas nervig mit den unbekannten Elementtypen, da diese logischerweise nicht die selbstdefinierten Attribute enthalten und somit beim Versuch darauf zuzugreifen eine Warnmeldung anzeigen.
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
08.02.12 02:26 #4
Eigene Attribute lassen sich ja auch auslesen: http://jsfiddle.net/wfykP/1/
Oder hatte ich dich falsch verstanden?
-
08.02.12 02:30 #5
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.960
So war das nicht gemeint sondern Attribute des Elements, eher eine Art Methode. Beispielsweise brauche ich ein Attribut content, das den Quelltext des enthaltenen content-Elements ausgibt:
HTML-Code:<decorator> <content> Inhalt des Dekorators </content> </decorator>
Code Javascript:1 2
var decorator = document.getElementsByTagName('decorator')[0]; decorator.content; // Gibt "Inhalt des Dekorators" aus
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
08.02.12 03:37 #6
Du könntest das mit jQuery parseXML machen:
http://jsfiddle.net/wfykP/4/HTML-Code:<html> <head> <script type="text/javascript"> function usemytag() { var tag = document.getElementsByTagName('mytag')[0]; var html = tag.innerHTML; var xml = jQuery.parseXML(html); console.log($(xml).find('decorator').find('content').text()); } </script> </head> <body> <mytag myAttribute="myValue"> <decorator> <content> Inhalt des Dekorators2 </content> </decorator> </mytag><br> <input type="button" value="Use My Tag" onclick="usemytag();"> </body> </html>
-
08.02.12 07:55 #7
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.960
Das hätte ich auch noch erwähnen sollen: jQuery ist nicht, genauso wenig wie jedes andere Framework.
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
08.02.12 11:58 #8
-
Das, was du willst, ist das Erweitern des HTMLElement-prototypes. Darüber wäre es möglich, alle HTML-Elemente um eine eigene Methode zu Erweitern, welche bspw. den Inhalt des Kind-<content/> eines Elementes liefert.
Knackpunkt: nicht alle Browser stellen einen constructor für (HTML)Element zur Verfügung. Abgesehen davon gibt es eine Menge Gründe, das DOM nicht zu erweitern
Also besser: Finger weg davon.
Und auch wenn du jQuery nicht leiden kannst: das ist einer der Gründe, warum jQuery im Laufe der Jahre andere Frameworks so weit hinter sich gelassen hat, es fummelt nicht wie die Kontrahenten am DOM herum.
Wenn du dich also (hoffentlich)entschliessen solltest, die Idee mit der DOM-Erweiterung zu vergessen, kommst du über kurz oder lang auf eine Lösung, die dem Ansatz von jQuery ähnelt(und wirst jQuery dann nicht mehr doof finden).Geändert von wollmaus (08.02.12 um 12:44 Uhr)
-
08.02.12 13:14 #10
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.960
Es geht mir nicht darum, dass ich jQuery nicht mag, aber es geht mir darum eine möglichst einfache Lösung zu finden, die nicht auf ein Framework setzt. Außerdem sind mir die Probleme beim Erweitern des DOM bekannt, dass stört mich aber in erster Linie nicht.
Trotzdem mag ich wissen, wie das jetzt genau aussehen muss.Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Code :
1 2 3 4 5 6 7 8
HTMLElement.prototype.content=function() { return( (this.getElementsByTagName('content').length) ? this.getElementsByTagName('content')[0].textContent : null ); }
Guggsdu: http://jsfiddle.net/t59gq/
-
09.02.12 00:29 #12
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.960
Aber damit erweitere ich doch nur das HTMElement und definiere kein eigenes neues HTML-Element..
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Du kannst mit Javascript kein neues HTML-Element definieren. HTML-Elemente werden definiert durch die DTD, und wenn das Element in der HTML-DTD nicht definiert ist, dann gibt es das in HTML nicht.
Um ein eigenes Element zu definieren musst du also eine eigene DTD erstellen, diese kannst du dann referenzieren.
Referenzieren geht entweder dokumentweit oder per Element, aber wie auch immer, dein Dokument wird dann kein gültiges HTML-Dokument, es ist XML.
Prominenter Anwendungsfall ist Facebook, die <fb:irgendwas>-Tags der FBML sind dir sicher schon mal begegnet. Aber: auch mit Milliarden in der Hinterhand wird daraus kein HTML, diese Elemente wurden im Nachhinein per JS durch HTML-Elemente ersetzt.
Info: Diese Vorgehensweise fanden die Entwickler anscheinend auf Dauer nicht mehr für anstrebenswert, FBML wird ab Juni 2012 nicht mehr unterstützt.Geändert von wollmaus (09.02.12 um 00:48 Uhr)
-
09.02.12 00:52 #14
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.960
Du brauchst mir nicht die Grundidee hinter HTML, XML und DTD erklären, denn diese kenne ich ausreichend. Aber ich weiß, dass man gerade in Hinsicht auf HTML5, beispielsweise in alten Versionen des Internet Explorers, die neuen Elemente, die im Quelltext enthalten sind, registrieren konnte und musste, damit der IE dieses als HTML-Elemente erkannt hat. Also muss es doch einen Ansatz geben, wie ich das lösen kann.
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Du hast recht, ich brauch dir nichts erklären, anstatt zu erzählen dass du eh alles weisst:
könntest du dir Wissen verschaffen, anstatt hier die OOP/DOM-Basics abzufragen, von denen du, mit Verlaub erwähnt, angesicht der von dir geposteten Codeschnipsel nur sehr rudimentäre Kenntnisse zu Haben scheinst.Du brauchst mir nicht die Grundidee hinter HTML, XML und DTD erklären, denn diese kenne ich ausreichend.
[...]
Außerdem sind mir die Probleme beim Erweitern des DOM bekannt, dass stört mich aber in erster Linie nicht.
Ähnliche Themen
-
eigenes Ereignis definieren
Von einfach nur crack im Forum Javascript & AjaxAntworten: 8Letzter Beitrag: 04.02.12, 20:54 -
eigenes Element
Von fbfeix im Forum HTML & XHTMLAntworten: 4Letzter Beitrag: 01.08.11, 21:58 -
Eigenes Swing-Element für Dialog erstellen
Von Quiddix im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 6Letzter Beitrag: 22.04.09, 17:57 -
Eigenes CMS in html für Termine
Von dj-help im Forum Content Management Systeme (CMS)Antworten: 4Letzter Beitrag: 01.07.05, 13:05 -
Newskästen in HTML definieren
Von nexius im Forum HTML & XHTMLAntworten: 23Letzter Beitrag: 22.05.03, 17:22






Zitieren
Login





