AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein document.getElementsByTagName("style") ist unvollständig!
Thema durchsuchen
Ansicht
Themen-Optionen

document.getElementsByTagName("style") ist unvollständig!

Ein Thema von FriFra · begonnen am 18. Aug 2007 · letzter Beitrag vom 20. Aug 2007
Antwort Antwort
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#1

document.getElementsByTagName("style") ist unvolls

  Alt 18. Aug 2007, 18:09
Ich lese mit document.getElementsByTagName("style") alle Styles eines Dokumentes ein. Das Problem an der Sache ist, dass einige Style-Tags via Javascript erzeugt werden, diese Styles werden über diese Funktion nicht gefunden. Was kann ich tun um wirklich alle Styles auszulesen?

Code:
for(n=0;n<site.document.getElementsByTagName("style").length;n=n+1){
  //Styles auslesen
  if(tmp.indexOf("style"+String(n))==-1){
    tmp=tmp+";style"+String(n);
    NeuerEintrag = new Option("style"+String(n),site.document.getElementsByTagName("style")[n].innerHTML, false, true);

    document.getElementById("MyClasses").options[document.getElementById("MyClasses").length] = NeuerEintrag;
  }
}
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: document.getElementsByTagName("style") ist unv

  Alt 18. Aug 2007, 19:54
Inwiefern generierst du mit JavaScript die styles?

ich könnte dir vorab nur raten, nicht n=n+1 zu nehmen sondern n++ ... ist viel leichter zu lesen
Damit incrementierst du dann genauso.

Dann wollt ich mal fragen, warum du bei document.getelementbyid("myclasses") stehen hast? also wieso nennst du deine id's myclasses, wenn man eine id doch eh nur einmal auf einer html seite verwendet
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#3

Re: document.getElementsByTagName("style") ist unv

  Alt 18. Aug 2007, 20:13
Zitat von quendolineDD:
Inwiefern generierst du mit JavaScript die styles?
Es gibt mehrere Tags, die wie folgt aussehen:
Code:
<script src="externesscript.js"></script>
Innerhalb dieser Scripts werden dann wieder Referenzen zu stylesheets erzeugt:
Code:
...
document.write("<style src=mystyle.css></style>");
...
Das funktioniert alles wunderbar, nur liefert document.getElementsByTagName("style") eben genau diese Styles NICHT, obwohl sie vorhanden sind. Das Auslesen der Styles passiert natürlich auch erst, nachdem die Seite vollständig geladen ist, also alle Styles schon angewendet sind.

Warum ich momentan welches Feld wie genannt habe ist erstmal uninteressant, weil ich ohnehin erst einmal dieses grundlegende Problem lösen muss.
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
Benutzerbild von S2B
S2B

Registriert seit: 1. Feb 2004
Ort: Aachen
1.268 Beiträge
 
#4

Re: document.getElementsByTagName("style") ist unv

  Alt 18. Aug 2007, 20:22
Versuch mal document.createElement() bzw. document.createAttribute() anstatt dem document.write().
Simon Praetorius
Gruß
S2B
  Mit Zitat antworten Zitat
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#5

Re: document.getElementsByTagName("style") ist unv

  Alt 18. Aug 2007, 20:27
Zitat von S2B:
Versuch mal document.createElement() bzw. document.createAttribute() anstatt dem document.write().
Nein, das geht nicht... Die Seite, die das betrifft, kann/darf nicht verändert werden. Meine Frage war außerdem nicht, wie ich am elegantesten Styles erzeuge, sondern, warum getElementsByTagName nicht zuverlässig funktioniert, bzw. wie ich eben doch an ALLE Styles heran komme.
Mein Script läuft in einem anderen Frame, die Seite, die ich auslesen will/muss ist Tabu .
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: document.getElementsByTagName("style") ist unv

  Alt 18. Aug 2007, 21:31
Hallo,

kannst du dir dein per JS verändertes HTML-Dokument mal anschauen? Stehen die STYLE Elemente da wo sie auch hingehören?

Hier noch eine alternative Vorgehensweise, die du sicher auch mit JS anwenden kannst: alle stylesheets auflisten

Grüße vom marabu
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: document.getElementsByTagName("style") ist unv

  Alt 19. Aug 2007, 15:27
Er verwendet externe CSS Dateien, wleche durch das JS implementiert werden.

Ich glaub ich hab da mal irgendwo ein Script gelesen, welches auch externe CSS durchgeht.
Mit deinem document... schaut er nur nach inline-css. Extern implementierte CSS Dateien werden damit nicht angeschaut.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Thorben77

Registriert seit: 22. Okt 2004
359 Beiträge
 
#8

Re: document.getElementsByTagName("style") ist unv

  Alt 19. Aug 2007, 23:55
Nur mal so dazwischengeworfen: Was ist das denn für eine Variante, ein Stylesheet einzubinden ?
Code:
<style src=mystyle.css></style>
Meinst du nicht eher sowas?
Code:
<link rel="stylesheet" type="text/css" href="Pfad/zur/CSS/Datei" />

<style type="text/css">
* {
  /* ... */
}
</style>
Zitat von FriFra:
Zitat von S2B:
Versuch mal document.createElement() bzw. document.createAttribute() anstatt dem document.write().
Nein, das geht nicht... Die Seite, die das betrifft, kann/darf nicht verändert werden. [...] Mein Script läuft in einem anderen Frame, die Seite, die ich auslesen will/muss ist Tabu .
Durch document.write() wird die Seite auch verändert. Und die DOM-Methoden, die S2B vorgeschlagen hat, machen im Prinzip nichts anderes.

Wenn man die style-Elemente „ordnungsgemäß“ nach S2Bs Vorschlag dynamisch erzeugt, tauchen sie auch in dem Array auf, das document.getElementsByTagName("style") zurückgibt.

Wenn du aber keinen Zugriff auf die Seite hast und das nicht ändern kannst, siehts schlecht aus.
  Mit Zitat antworten Zitat
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#9

Re: document.getElementsByTagName("style") ist unv

  Alt 20. Aug 2007, 09:14
Hallo zusammen....
Die alternative Methode aus Marabus Link hat soweit funktioniert, dass ich die URL des bettr. StyleSheets heraus gefunden habe und jetzt klappt der ertste Teil von dem was ich vor hatte

Den ersten Teil habe ich jetzt geschafft aber nun habe ich das nächste Problem: http://www.delphipraxis.net/internal...t.php?t=116678
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz