Archiv verlassen und diese Seite im Standarddesign anzeigen : browserweiche will nicht, so wie sie soll
lindworm 14-12-2004, 22:22 hi@all, habe ein problem und zwar möchtet ich, dass mozilla (bzw. firefox)
eine eigene css-datei bekommt, da er teilweise breiten- und größenangaben , die sich auf eine tabelle beziehen und in der mit table class eingebundenen css-datei stehen anders (ich sag jetzt extra nicht falsch, bevor hier wieder ein kleinkrieg ausbricht, der mir nicht im geringsten nutzt ;)) interpretiert als opera und der ie. dafür hab ich auch extra dieses kleine php-script in den head-bereich eingefügt:
<?
if(strstr($_SERVER['HTTP_USER_AGENT'], "Mozilla")
{
$browser = "<link rel="stylesheet" type="text/css" href="mozilla.css">";}
else {
$browser = "<link rel="stylesheet" type="text/css" href="formate.css">";}
?>
<?echo $browser; ?>
so, die browser interpretieren jetzt schonmal ein stylesheet, leider greift sich das allgemeine script und die browser geben noch das aus:
";} else { $browser = "";} ?>
den bereich hab ich nochmal fett markiert, damit man besser erkennen kann, worum es sich handelt.
Ich muss also noch irgendeinen Fehler drin haben. Könnt ihr irgendwas finden?
ich hab schon ewig im netz gesucht, aber nichts gefunden, bitte um genade mit einem unwissenden ;)
1. vergleich mal:
$browser = "<link rel="stylesheet" type="text/css" href="mozilla.css">";
// VS
$browser = '<link rel="stylesheet" type="text/css" href="mozilla.css">';
2. bringt dir eine prüfung auf "Mozilla" nicht viel, da der IE diesen string auch sendet und der mac safari und ...
lindworm 14-12-2004, 22:37 ja, ich habe mir überlegt auf gecko zu prüfen, da der eintrag nur bei mozilla und dem aktuellen netscape (sehr mozilla-ähnlich)
danke schon mal für die antwort
aber das ändern der anführungszeichen hat leider nichts geändert, ich bekomme immer noch die selbe ausgabe :(
trotzdem schonmal danke, dass du geantwortet hast ;)
hmm,
auch wenn es keiner mehr hören kann ...
- firefox interpretiert richtig, ie falsch.
- trotzdem läßt sich so layouten, daß das erscheinungsbild in allen browsern gleich ist
egal.
wie sieht momentan der erzeugte und der erzeugende source aus? nach anwendung der von Wurzel vorgeschlagenen änderungen muß sich etwas geändert haben ....
sich auf den ua zu verlassen, ist das schlechteste, was du machen kannst ...
http://www.dithered.com/css_filters/css_only/index.php
Also das was Wurzel vorgeschlagen hat, sollte eigentlich auch so funktionieren...
ansonsten escapen:
$browser = "<link rel=\"stylesheet\" type=\"text/css\" href=\"mozilla.css\">";
Original geschrieben von derHund
auch wenn es keiner mehr hören kann ...
- firefox interpretiert richtig, ie falsch.
- trotzdem läßt sich so layouten, daß das erscheinungsbild in allen browsern gleich ist
und serverseitige "browserweichen" sind der größte quatsch, und unzuverlässig.
CSS hacks und/oder conditional comments sind die zu bevorzugenden mittel, um den browsern nach ihren fähigkeiten anderes CSS vorzusetzen, und nicht nach dem, wo für sie sich ausgeben.
lindworm 15-12-2004, 17:00 @derhund: ich weis ;)
und wegen der kompatibilität: hab sonst immer so gearbeitet, aber da mozilla bei tabellen angegebene class-definitionen für die platzangabe anderst interpretiert als der ie und opera, welche tabellen-classes genauso interpretieren wie normale über
<p class="soundso">blabla</p> eingefügte classes. nur dafür brauche ich so ne blöde browserweiche
@wahsaga: also ich finde es ist eine sauberere lösung, als hacks, welche man bei jeder neuen version von browsern prüfen, muss, ob sie noch funktionieren
und leider haben die änderungen von wurzel gar nichts gebracht und das escapen bringt, dass kein browser auch nur irgendein stylesheet findet
penizillin 16-12-2004, 16:11 dann wirst du wohl etwas falsch gemacht haben, denn die vorgeschlagene lösung war in ordnung.
lindworm 16-12-2004, 22:59 hab echt alles so eingeben, ich weis echt nicht mehr weiter :(
sieht jetz so aus:
<?php
$mozilla = strstr("gecko" , $_SERVER['HTTP_USER_AGENT']);
if ($mozilla == true)
{
echo ('<link rel="stylesheet" type="text/css" href="mozilla.css">');
}
else
{
echo ('<link rel="stylesheet" type="text/css" href="formate.css">');
}
?>
funzt aber immer noch nicht, trotzdem schonmal ein dickes DANKE für eure antworten und eure zeit ;)
wie äussert sich "funzt nicht"?
- fehlermeldungen?
- error-reporting auf E_ALL?
- kann man das online sehen?
- hast du testausgaben gemacht?
Gehört das ned ins HTML Forum ?!
btw:
<link href="mozilla.css" rel="stylesheet" type="text/css" title="Mozilla Style" />
<!--[if IE]>
<link href="ie.css" rel="stylesheet" type="text/css" title="IE Style" />
<![endif]-->
Suchste das ?!
lindworm 17-12-2004, 23:13 also, grundsätzlich scheint das script auch zu funktionieren, allerdings wird der strstr-tag
nur als komplette ausgabe ausgewertet, also nicht, wenn ich nur gecko eingebe, sondern erst, wenn die komplette ausgabe mit
$_SERVER['HTTP_USER_AGENT']
übereinstimmt, aber ich möchte ja, dass die ausgabe dieser variable nach einem bestimmten begriff durchsucht wird. kann mir da jemand helfen? ich weiß nicht wie man das definieren würde und habe auch schon im internet gesucht, aber nichts passendes gefunden :(
und leider klappt das bei mir mit dem einbinden noch ned so ganz, wie kann ich die php-datei direkt am anfang aus einer externen datei laden?
mit dem include-befehl? und wenn ja, wie lautet der string?
und nochmal HERZLCIHEN DANK für eure wertvolle zeit und hilfe für php-noobs ;)
nimm mal stristr ... in meinen stats steht "Gecko" nicht "gecko" und strstr vergleicht auf gross- & kleinschreibung
@skaschy
er wills partout mit php machen ...
lindworm 18-12-2004, 01:27 hmm, aendern tut das leider nix, wenn ich stristri nehme :(
PS: javascript will ich ned nehmen, weil viele das ausgeschaltet haben und deshalb die falsche/ gar keine css datei bekommen würden
penizillin 18-12-2004, 15:03 php.net berichtet:
string stristr (string haystack, string needle)
weißt du, was die worte haystack und needle in den klammern bedeuten?
lindworm 18-12-2004, 16:09 hmm, also mein wörterbuch meint haystack heiße heuschober also sowas wie ne scheune lol
und needle heißt nadel
*pling*
nadel im heuhaufen, rofl
penizillin 18-12-2004, 16:26 es ist zwar schön, dich zum schmunzeln zu bringen, aber die frage hatte ihren sinn.
diese termini werden verwendet um die benutzung des befehls zu verdeutlichen - man sucht eine NADEL in einem HEUHAUFEN. in deinem letzten code-zitat suchst du einen HEUHAUFEN in einer NADEL.
man kriegt ja echt muskelkater von diesem zaunpfahl.
lindworm 18-12-2004, 22:05 achso, da hast du rgendwie recht ^^
soll es statt
$mozilla = stristr("gecko" , $_SERVER['HTTP_USER_AGENT']);
so heißen?
$mozilla = stristr($_SERVER['HTTP_USER_AGENT'] , "gecko" );
und muss vor und hinter dem komma ein leerzeichen sein, oder wie normal nur dahinter, hab nämlich gerade bemerkt, dass ich in meinem code vor und hinter dem komma ein hab
*beulevomzaunpfahlkühlengeh*
penizillin 19-12-2004, 01:37 so ist es richtig.
leerezeichen bei der kommastzung zwischen einzelnen argumenten ist zwar egal, aber man empfiehlt das übliche wort-komma-leerzeichen-schema, um den lesefluss nicht zu stören.
lindworm 19-12-2004, 01:56 echo ('SUPER DANKE DANKE DANKE ES KLAPPT');
*megafreu*
lag wohl an der reihenfolge.
@penizillin: wo hast du das bei php.net gefunden?
hab das nämlich irgendwie ned gefunden
//habs gefunden und runtergeladen, nochmal DANKE für alles, hoffe ich kann mich mal revanchieren
|
-
- |