PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : FIXED: Yaml (für Drupal) auf Safari



Aventori
11.04.2011, 13:51
Hallo an alle,

ich habe das Yaml für Drupal Theme, Version 6.x-3.2.1.13 unter Drupal 6 (Version 6.20) installiert. Auf Firefox/Win läuft es hervorragend. Sehr stabil und ich komme gut damit zurecht! Unter Safari/Mac ist es allerdings total zerschossen. Es ist sehr offensichtlich, dass hier einige CSS-Dateien gar nicht erst geladen werden. Ich habe zunächst bei Google und dann auch hier im Forum geschaut und folgenden Hinweis zum Thema YAML/Safari gefunden:

Es gibt Probleme mit der Deklaration @charset "UTF-8"; die zu Beginn einer jeden CSS-Datei erfolgt. Wie ich auf dieses Problem reagieren soll, ist mir allerdings nicht ganz klar. Diese Deklaration darf offensichtlich nur ein einziges mal, ganz am Anfang erfolgen. Ich habe nun analysiert, in welcher Reihenfolge meine CSS-Dateien geladen werden und einzig bei der ersten Datei ("/yaml/core/base.css") diese Deklaration dringelassen. Bei allen anderen habe ich es weggelöscht. Leider hat dies keinen Unterschied bewirkt.

Edit: Meine CSS-Kompression ist in Drupal deaktiviert!

Ich danke für Eure Zeit und Ratschläge, wenn Ihr mir sagen könnt, wie ich am besten verfahre um das Problem einzukreisen und zu beheben. Ich stehe hier mächtig unter Zeitdruck, denn in 2 Tagen ist Abnahme des Projektes!

Mit den besten Grüßen,
Nico

Aventori
11.04.2011, 14:29
Ich antworte hier mal selber auf meinen Beitrag, statt die Frage wieder zu löschen. Ich hatte einen verheerenden Schreibfehler in der basemod.css, den Safari nicht durchgehen ließ, Firefox und IE / Win aber schon. Deshalb dachte ich zunächst es wäre ein Problem zwischen Yaml und Safari, was aber nicht stimmt.

Ich lasse die grundsätzliche Frage zu Yaml und Safari trotzdem stehen, da ich immer noch gerne wüsste, wie ich mit der Charset-Deklaration verfahren soll. Hat diese Sache noch Relevanz? Etwa für ältere Safari-Generationen?

Danke.
Beste Grüße,
Nico

djesse
12.04.2011, 13:40
Hallo Nico,


Es gibt Probleme mit der Deklaration @charset "UTF-8"; die zu Beginn einer jeden CSS-Datei erfolgt. Wie ich auf dieses Problem reagieren soll, ist mir allerdings nicht ganz klar. Diese Deklaration darf offensichtlich nur ein einziges mal, ganz am Anfang erfolgen.

Grundsätzlich muss @charset in der ersten Zeile einer CSS-Datei stehen, auch darf kein Leerzeichen davor sein - leider ist diese Regelung der CSS-Spec in dieser Hinsicht sehr restriktiv.

Der Safari ist in dieser Hinsicht besonders pingelig und quitiert Stylesheets mit mehr als nur einer Charset-Deklaration innerhalb des Stylesheets mit Ignoranz - sie werden also gar nicht ausgewertet. Genau das passiert bei einigen CSS-Kompressoren, die beim Zusammenfügen einelner CSS-Dateien den korrekten Umgang mit @charset nicht beherrschen.

Im Umkehrschluss sind mir bisher keinerlei Probleme bekannt, im normalen Umgang mit derartig ausgezeichneten Dateien. Wenn Du also sicher bist, keine Kompression zu nutzen, würde ich eine Validitätsprüfung anregen - vielleicht hat sich woanders noch ein Fehler eingeschlichen.

Drittens bleibt zu sagen, dass aus der Erfahrung vieler Anwender dies immer wieder mal ein Stolperstein ist. Entsprechend der CSS-Spezifikation ist die Angabe von @charset optional, genauso gut kann die Enkodierung der Dateien per .htaccess gesetzt werden, bzw. der Browser geht per default von UTF-8 aus, wenn nichts gegenteiliges angegeben wird. Somit kannst Du die Deklaration auch einfach löschen.

In YAML 3.3 (aktuelle Version) ist die Deklaration aus den genannten Gründen ebenfalls verschwunden, um derartige Probleme zukünftig einfach zu vermeiden.

Ich hoffe, das hilft weiter ...

Viele Grüße
Dirk Jesse

Aventori
13.04.2011, 09:35
Hallo Dirk,

vielen Dank für deine gute Erklärung! Nun verstehe ich schon etwas mehr. Könntest Du mir vielleicht noch einmal kurz erläutern, wie die "Encodierung per .htaccess" von statten geht? Das wäre vielleicht auch noch für andere interessant, die diesen Thread hier mal lesen und eine Lösung brauchen. Danke.

Beste Grüße,
Nico

djesse
13.04.2011, 11:01
Hier nachzulesen:

http://www.w3.org/International/questions/qa-htaccess-charset.de.php
http://www.askapache.com/htaccess/setting-charset-in-htaccess.html

Gruß
Dirk

Aventori
13.04.2011, 11:16
Vielen Dank. Betrachte den Thread als "closed" da die Frage nachhaltig beantwortet wurde :-)

hass
22.04.2011, 13:39
@charset ist nicht Dein problem. Der Drupal css compressor hat damit auch kein problem mehr. Der bug liegt jahre zurück. @charset muss wieder eingebaut werden. Deshalb warte ich auf die nächste yaml version bis es wieder eingebaut ist.

Alle bekannten probleme kommen daher das unwissende extrem schlechte css kompressoren gebaut haben und dort ohne ende bugs drin sind. Die Entwickler dieser compressoren müssen ihre bugs fixen. Wir müssen das nicht ausbauen und für bzw. unter drupal ist das so oder so alles irrelevant was diese buggy compressoren für einen mist bauen.