Probleme mit CSS Stylesheet
Christian S
- css
Hallo,
ich wollte Fragen ob es eine Möglichkeit gibt, wenn ich auf eine (in einem Frame eingebette) *.html Datei von 2 verschiedenen Webseiten zugreife, dass diese Jeweils mit einem Anderen Stylesheet angezeigt werden? (Eventuell über die Abfrage nach welche Adresszeile gerade geladen ist)
Bis jetzt muss ich die Datei immer auf Beide Webseiten hochladen und hab meinen Quelltext so begonnen...
<!DOCTYPE HTML PUBLIC>
<html>
<head>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
...
</body>
</html>
Wäre super, wenn mir jemand eine Lösung hätte, denn ich hab im Internet nicht wirklich was gefunden.
Mfg Christian
Om nah hoo pez nyeetz, Christian S!
ich wollte Fragen ob es eine Möglichkeit gibt, wenn ich auf eine (in einem Frame eingebette) *.html Datei von 2 verschiedenen Webseiten zugreife, dass diese Jeweils mit einem Anderen Stylesheet angezeigt werden? (Eventuell über die Abfrage nach welche Adresszeile gerade geladen ist) Bis jetzt muss ich die Datei immer auf Beide Webseiten hochladen und hab meinen Quelltext so begonnen...
nein.
Woher soll die Seite wissen, in welcher Umgebung sie angezeigt wird?
Möglicherweise ließe sich serverseitig was tun. Bei der Gelegenheit könntest du auch gleich auf Frames verzichten. Sie bringen meist nur Ungemach.
Matthias
Woher soll die Seite wissen, in welcher Umgebung sie angezeigt wird?
Gibt´s da nicht die Möglichkeit über Java Script ähnlich wie bei
http://de.selfhtml.org/javascript/objekte/location.htm#hostname@title=http://de.selfhtml.org/javascript/objekte/location.htm#hostname
Die Adresszeile Auszuwerhten und darauf hin mit einer if/else Fuktion dass stylesheet zu zuweisen
Om nah hoo pez nyeetz, Christian S!
Gibt´s da nicht die Möglichkeit über Java Script ähnlich wie bei [ref:self812;javascript/objekte/location.htm#hostname@title=http://de.selfhtml.org/javascript/objekte/location.htm#hostname] Die Adresszeile Auszuwerhten und darauf hin mit einer if/else Fuktion dass stylesheet zu zuweisen
if/else gibt es in HTML nicht, die Zugriff auf das Elternframeset sollte die SOP verhindern.
Matthias
Hallo Matthias,
ich hab mich gerade fast abgerollt vor Lachen - allerdings dauerte es eine Weile, bis ich den Gag begriffen hatte. :-)
1/z ist kein Blatt Papier.
Schön! Geht in dieselbe Kerbe wie das k/π.
Fröhliche Eiertage,
Martin
Om nah hoo pez nyeetz, Der Martin!
ich hab mich gerade fast abgerollt vor Lachen - allerdings dauerte es eine Weile, bis ich den Gag begriffen hatte. :-)
Ein Zeichen für deine mathematische Grundbildung. Man kommt erst später auf den Gedanken es anders zu lesen.
Matthias
Om nah hoo pez nyeetz, Der Martin!
Fröhliche Eiertage,
rohe eiertage - ich glaube, meine -Taste geht nicht.
Matthias
Hi,
ich bin mir nicht sicher, ob ich dein Anliegen richtig verstehe, weil es mir relativ sinnlos vorkommt. Ich fasse nochmal zusammen:
* Du hast mehrere HTML-Dokumente auf unterschiedlichen Hosts/Domains
* Du möchtest immer dasselbe Stylesheet einbinden ...
* ... und doch je nach Host verschiedene Formatierungen wirksam werden lassen?
Vor allem der zweite und dritte Punkt bilden für mich einen Widerspruch. Denn was spricht dagegen, für jedes HTML-Dokument ein eigenes Stylesheet zu machen, und dieses auf jeder Webpräsenz im gleichen Verzeichnis abzulegen? Dann bräuchtest du im Kopf des HTML-Dokuments auch nichts mehr anzupassen, denn der Pfad zur CSS-Ressource wäre ja immer derselbe.
Aber wenn du tatsächlich von mehreren Dokumenten auf ein gemeinsames Stylesheet zugreifen willst, könnte ich mir mehrere Lösungen vorstellen.
Stylesheets aufteilen:
Fasse alle CSS-Regeln, die für alle deine Dokumente gelten sollen, in ein zentrales Stylesheet zusammen, das du in allen Dokumenten einbindest. Erzeuge dann für jedes Dokument ein zweites Stylesheet, in dem nur die individuellen Definitionen für dieses eine Dokument stehen, und lege dieses Stylesheet lokal für jedes Dokument separat ab (evtl. sogar als style-Element im Kopf des HTML-Dokuments).
Stylesheets zusammenfassen und selektieren:
Mach *eine* große CSS-Datei, in der *alle* Definitionen zusammengefasst sind. Also sowohl die gemeinsamen, als auch die individuellen für jedes Dokument. Gib im Dokument dem body-Element eine ID, die mit z.B. dem Hostnamen korreliert, und selektiere die individuellen CSS-Regeln dann über den Nachfahrenselektor.
Bis jetzt muss ich die Datei immer auf Beide Webseiten hochladen
Und was spricht dagegen?
Ciao,
Martin
Hi, da hab ich mich wohl schlecht ausgedrückt, ich hab´s wie folgt gemeint:
* Du hast mehrere HTML-Dokumente auf unterschiedlichen Hosts/Domains
Ich habe ein HTML-Dokument, auf welches unterschiedlichen Domains zugreifen
* Du möchtest immer dasselbe Stylesheet einbinden ...
Ich möchte je nach Seite immer ein anderes Stylesheet verwenden.
* ... und doch je nach Host verschiedene Formatierungen wirksam werden
Hallo,
* Du hast mehrere HTML-Dokumente auf unterschiedlichen Hosts/Domains
Ich habe ein HTML-Dokument, auf welches unterschiedlichen Domains zugreifen
aha, also ein Dokument, das in unterschiedliche Framesets eingebunden wird?
Dann sieht's schlecht aus. Denn ein Frameset ist ja nur ein Verbund von Dokumenten, von denen jedes für sich eigenständig ist und nicht mit den anderen in Verbindung steht.
* Du möchtest immer dasselbe Stylesheet einbinden ...
Ich möchte je nach Seite immer ein anderes Stylesheet verwenden.
Dann übergib dem eingebundenen Dokument über die Referenz im Frameset einen URL-Parameter und werte diesen im eingebundenen Frame-Dokument aus.
Das wäre bedingt mit Javascript möglich (Zugriff über location.search), allerdings mit dem Nachteil, dass die Lösung nur funktioniert, wenn Javascript zugelassen wird - andernfalls hätte das Dokument entweder ein Default-Stylesheet oder gar keins, je nach Realisierung. Die direkte Abfrage des Framesets (oder einer Eigenschaft davon) scheitert, wie Matthias schon erwähnt, an der Same Origin Policy.
Besser und zuverlässiger ist es, den URL-Parameter serverseitig auszuwerten, z.B. mit PHP, wenn dir das zur Verfügung steht. Dann kannst du das link-Element zur Einbindung des Stylesheets dynamisch generieren.
So long,
Martin