Raucherkrebs: Browserweiche

Hallo Forum,

es soll für die verschiedenen Browser verschiedene Stylesheets geladen werden. Habe das rumgepfusche satt. Läuft es endlich auf einem Browser habe ich das Aussehen für einen anderen zerstört.

Hier die Funktion:

function returnUserAgent() {         $search_browser = array(         "Netscape/7",      // Slash jetzt vor der Versionsnummer!         "Netscape6/6.0",         "Netscape6/6.1",         "Netscape6/6.2",         "MultiZilla",    // (Unix ...)         "MSIE 6.0",         "MSIE 5.1",     // (Mac)         "MSIE 5.2",     // (Mac)         "MSIE 5.5",         "MSIE 5.01",         "MSIE 5.0",         "MSIE 4.01",         "MSIE 4.0",         "MSIE 4.5",         "MSIE2",         "MSIE 2",         "MSIE 3",         "MSIE3",         "Mozilla/5.0",         "Mozilla/4.7",         "Mozilla/4.6",         "Mozilla/4.5",         "Mozilla/4.0",         "MSIE");

$clear_browser = array(         "NationalDirectory" => "??? NationalDirectory",         "NetResearchServer" => "??? NetReasearchCenter",         "NutchCrawler" => "??? NutchCrawler",         "kolibri" => "Suchmaschine www.kolibri.de",           "Scooter" => "Suchmaschine www.altavista.de",         "Search.at" => "Suchmaschine www.search.at",            "Sexsearcher" => "Suchmaschine www.sexsearcher.com",         "Slurp" => "Suchmaschine www.hotbot.com",         "SwissSearch" => "Suchmaschine www.swisssearch.ch",         "The Informant" => "Suchmaschine informant.dartmouth.edu",         "Ultraseek" => "Suchmaschine www.ultraseek.com",         "WiseWire" => "Suchmaschine www.wisewire.com",         "SlySearch" => "Suchmaschine wwwslysearch.com",         "Openbot" => "Suchmaschine www.openfind.com.tw",         "psbot" => "Suchmaschine www.picsearch.com",         "Scrubby" => "Suchmaschine www.scrubtheweb.com",         "SlySearch" => "Suchmaschine www.slysearch.com",         "TurnitinBot" => "Suchmaschine www.turnitin.com",         "WebSearch" => "Suchmaschine www.websearch.com.au",         "WebWombat"  => "Suchmaschine www.webwombat.com.au",         "ZyBorg" => "Suchmaschine www.wisenut.com",  "internetseer" => "Monitor sitecheck.internetseer.com",

// Email Sammler         "CherryPicker" => "Mailsammler CherryPicker",         "Crescent" => "Mailsammler ExtractorPro WebWeasel WebMole",         "EmailCollector" => "Mailsammler EmailCollector",         "EmailSiphon" => "Mailsammler EmailSiphon",         "EmailWolf" => "Mailsammler EmailWolf",         "ExtractorPro" => "Mailsammler ExtractorPro",         "Mozilla/2.0 (compatible; NEWT ActiveX; Win32)" => "Mailsammler WebCollector", // WebCollector         "WEBMOLE" => "Mailsammler WebMole",         "Microsoft URL Control" => "Mailsammler ??",         "NICErsPRO" => "Mailsammler NICErsPro",         "Telesoft" => "Mailsammler Telesoft",         "WebBandit" => "Mailsammler WebBandit",         "WebEMailExtractor" => "Mailsammler WebEmailExtractor",         "Advanced Email Extractor" => "Mailsammler Organica",         "Mail Sweeper" => "Mailsammler Mail Sweeper",         // HTML-Code Validatoren         "Java1.1.3" => "Codechecker Bobby",         "KGValidator" => "Codechecker KGValidator",         "LECodeChecker" => "Codechecker LECodeChecker",         "libwww-perl/5" => "Codechecker LECodeChecker",         "Mozilla/3.0 Gold" => "Codechecker Web Site Garage",         "ValueClick Robocop" => "Codechecker ValueClick Robocop",         "W3C_Validator" => "Codechecker W3C_Validator",         "0.5 libwww-perl/0" => "Codechecker DoctorHTML",

// Browser         "AmigaVoyager/1" => "AmigaVoyager v1",         "AmigaVoyager/3" => "AmigaVoyager v3",         "Arexx" => "Arexx",         "Aweb/2" => "Aweb v2",         "Aweb/3" => "Aweb v3",         "Beonex" => "Beonex",         "Chimera" => "Chimera",         "CrazyBrowser" => "CrazyBrowser 1.0.1",         "Crazy Browser" => "CrazyBrowser 1.0.5",         "Dillo" => "Dillo",         "ELinks (0.4" => "ELinks 0.4",         "ELinks (0.3" => "ELinks 0.3",         "Galeon/1.0" => "Galeon 1.0",         "Galeon/1.2" => "Galeon 1.2",         "Galeon" => "Galeon",         "Opera/3" => "Opera 3",         "Opera 4" => "Opera 4",         "Opera 5.0" => "Opera 5",         "Opera/5.0" => "Opera 5",         "Opera 6" => "Opera 6",         "Konqueror/2.0" => "Konqueror 2.0",         "Konqueror/2.1" => "Konqueror 2.1",         "Konqueror/2.2" => "Konqueror 2.2",         "Konqueror/3.0" => "Konqueror 3.0",         "Konqueror/3" => "Konqueror 3.0",         "Skipstone" => "Skipstone",         "Phoenix" => "Phoenix",         "Lynx/2.7" => "Lynx 2.7",         "Lynx/2.8" => "Lynx 2.8",         "Lynx" => "Lynx",         "Links" => "Links",              "IBrowse/7.0" => "IBrowse 7.0",         "Netscape/7" => "Netscape 7",         "Netscape6/6.0" => "Netscape 6.0",         "Netscape6/6.1" => "Netscape 6.1",         "Netscape6/6.2" => "Netscape 6.2",         "MultiZilla" => "MultiZilla",         "MSIE 6.0" => "Microsoft Internet Explorer 6",         "MSIE 5.1" => "Microsoft Internet Explorer 5.1",         "MSIE 5.2" => "Microsoft Internet Explorer 5.2",         "MSIE 5.5" => "Microsoft Internet Explorer 5.5",         "MSIE 5.01" => "Microsoft Internet Explorer 5.01",         "MSIE 5.0" => "Microsoft Internet Explorer 5.0",         "MSIE 4.01" => "Microsoft Internet Explorer 4.01",         "MSIE 4.0" => "Microsoft Internet Explorer 4.0",         "MSIE 4.5" => "Microsoft Internet Explorer 4.5",         "MSIE2" => "Microsoft Internet Explorer 2",         "MSIE 2" => "Microsoft Internet Explorer 2",         "MSIE 3" => "Microsoft Internet Explorer 3",         "MSIE3" => "Microsoft Internet Explorer 3",

"Mozilla/5.0" => "Netscape 5.0",         "Mozilla/4.7" => "Netscape 4.7",        "Mozilla/4.6" => "Netscape 4.6",         "Mozilla/4.5" => "Netscape 4.5",         "MSIE" => "Microsoft Internet Explorer",         "unknown" => "unbekannt");

$os = array(

"AmigaOS 3.0",         "Win16",         "Windows NT 4.0",         "Windows NT 5.0",         "Windows NT 5.1",         "Windows NT",         "Windows 95",         "Windows 98",         "Windows ME",         "Windows 2000",         "Windows XP",         "Win95",         "Win98",         "WinNT4",         "WinNT",         "Debian",         "HP-UX",         "SunOS",         "AIX",         "BeOS",         "Linux",         "OpenBSD",         "Macintosh",         "MacPowerPC",         "IRIX");

$os_clear = array(

"unknown" => "unbekannt",         "AmigaOS 3.0" => "AmigaOS 3.0",         "Win16" => "Windows 3.1",         "Windows NT 4.0" => "Windows NT",         "Windows NT 5.0" => "Windows 2000",         "Windows NT 5.1" => "Windows XP",         "Windows NT" => "Windows NT",         "Windows 95" => "Windows 95",         "Windows 98" => "Windows 98",         "Windows ME" => "Windows ME",         "Windows 2000" => "Windows 2000",         "Windows XP" => "Windows XP",         "Win95" => "Windows 95",         "Win98" => "Windows 98",         "WinNT4" => "Windows NT",         "WinNT" => "Windows NT",         "Debian" => "Linux",         "HP-UX" => "HP-UX",         "SunOS" => "Sun Solaris",         "AIX" => "AIX",         "BeOS" => "BeOS",         "Linux" => "Linux",         "OpenBSD" => "OpenBSD",         "Macintosh" => "Macintosh",         "Mac_PowerPC" => "Power Mac",         "IRIX" => "IRIX");

$agentstring = getenv("HTTP_USER_AGENT");         $system = $agent = "unknown";         preg_match("#(" . preg_quote(implode("|", $search_browser)) . ")#i", $agentstring, $matches);         if (isset($matches[1])) $agent = $matches[1];

preg_match("#(" .  preg_quote(implode("|", $os)) . ")#i", $agentstring, $matches);         if (isset($matches[1])) $system = $matches[1];

return $agent; }

Getestet habe ich es mit der neuesten Version des IE, Netscape, Opera, Mozilla, Firefox. Leider wird immer unknown zurückgegeben. Sieht jemand das Problem?

  1. Ahoi

    Habe das rumgepfusche satt.

    Browserweichen sind rumgepfusche.

    preg_match("#(" . preg_quote(implode("|", $search_browser)) . ")#i", $agentstring, $matches);

    preg_quote() maskiert die relevanten Metazeichen.
    Da gehört | natürplich mit dazu.

    array_map() könnte Dir helfen.

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. Ahoi
      Browserweichen sind rumgepfusche.

      Nein alles andere ist Rumgepfusche.

      1. Moin!

        Ahoi
        Browserweichen sind rumgepfusche.

        Nein alles andere ist Rumgepfusche.

        Nein, serverseitige Browserweichen sind Rumgepfusche.

        Schreibe vernünftiges HTML und CSS, dann hast du keine Probleme. Die notwendigen Anpassungen bezüglich des IE lassen sich, sofern wirklich notwendig, clientseitig ins HTML und CSS integrieren.

        - Sven Rautenberg

        1. Schreibe vernünftiges HTML und CSS, dann hast du keine Probleme.

          Ich habe es geahnt, diese ganzen Strapazen, mit denen ich mich tagtäglich beim Webseitenbasteln abmühe, sind reine Einbildung... ;)

      2. Hi,

        Browserweichen sind rumgepfusche.
        Nein alles andere ist Rumgepfusche.

        Du irrst. Gewaltig. Mächtig gewaltig.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Du irrst. Gewaltig. Mächtig gewaltig.

          Und warum ?

          1. Hi,

            Du irrst. Gewaltig. Mächtig gewaltig.
            Und warum ?

            welch immenser Unsinn in Browserweichen an sich steckt, und welch noch größerer in serverseitigen solchen, wurde bereits hinreichend oft ergründet und ist im </archiv/> recherchierbar.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
        2. Hallo,

          Browserweichen sind rumgepfusche.
          Nein alles andere ist Rumgepfusche.

          Du irrst. Gewaltig. Mächtig gewaltig.

          um mal den Begriff Macht aufzugreifen, da CSS -oder gerne auch die real existierende Unterstützung von CSS- nicht mächtig genug ist hält sich der fragliche Irrtum doch in eher bescheidenen Grenzen.

          Das bei CSS in der Praxis nötige Rumgepfusche geht schließlich soweit, daß ausgerechnet beim Anspruch der Barrierefreiheit wegen des Verhaltens der existierenden Screenreader, die sich meist als Auswerter des Bildschirms und nicht als Vorleser verstehen, mit unklarem Restrisiko gehackt werden muss wie beim Ersatz von display:none.

          Es sind derzeit also eher Sonderfälle welche ohne Browserweiche auskommen, zumindest wenn man vom Ansatz ausgeht CSS als alleiniges Layoutwerkzeug für "modernes" XHTML zu nutzen.
          Und auch als elegante Lösung gerade solche crossbrowsertauglichen Varianten zu suchen, ob nun Tabellenlayout oder eher verschachtelte DIVs oder ggf. eingeschränktes Layout, kann als Rumgepfusche betrachtet werden.

          Grüsse

          Cyx23

          1. Hi,

            Es sind derzeit also eher Sonderfälle welche ohne Browserweiche auskommen,

            da muss ich vehement widersprechen. Nach meiner Erfahrung ist _niemals_ eine Browserweiche nötig.

            zumindest wenn man vom Ansatz ausgeht CSS als alleiniges Layoutwerkzeug für "modernes" XHTML zu nutzen.

            Da reichen handelsübliche CSS-Hacks voll und ganz aus.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Hallo,

              Es sind derzeit also eher Sonderfälle welche ohne Browserweiche auskommen,

              da muss ich vehement widersprechen. Nach meiner Erfahrung ist _niemals_ eine Browserweiche nötig.

              zumindest wenn man vom Ansatz ausgeht CSS als alleiniges Layoutwerkzeug für "modernes" XHTML zu nutzen.

              Da reichen handelsübliche CSS-Hacks voll und ganz aus.

              Verwaltungskomfort oder Übersichtlichkeit wie bei einer einzigen CSS-Datei unterstellt (ich vermute mal dass du auch darauf abzielst) lässt sich, wenn auch in geringerem Umfang, per CMS erreichen.

              Sonst hatte ich da bei meiner Betrachtung gar nicht zwischen CSS-Hacks und Browserweichen unterscheiden wollen, denn CSS-Hacks sind ja Browserweichen oder -filter.

              Dazu weisen einige prominente "handelsübliche CSS-Hacks" je nach Anwendungsfall ganz erhebliche Mängel auf, die oft auf einer isolierten Betrachtung des Hacks beruhen; viele "handelsübliche CSS-Hacks" sind bei Änderungen im HTML neu zu überprüfen und ggf. zu ersetzen, deshalb ist die Idee etwa von eigenständigen Datei-Versionen für den IE durchaus auch hilfreich oder vorteilhaft bei der Entwicklung, also eine Option mit verschiedenen Vor- und Nachteilen oder auch eine Entwicklungsversion.

              Grüsse

              Cyx23

              1. hi,

                Sonst hatte ich da bei meiner Betrachtung gar nicht zwischen CSS-Hacks und Browserweichen unterscheiden wollen, denn CSS-Hacks sind ja Browserweichen oder -filter.

                sie orientieren sich aber an den _fähigkeiten_ des browsers - und nicht daran, als wer er sich ausgibt.

                gruß,
                wahsaga

                --
                Rest in peace, Dimebag!
                #
                "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
              2. Hi,

                Sonst hatte ich da bei meiner Betrachtung gar nicht zwischen CSS-Hacks und Browserweichen unterscheiden wollen, denn CSS-Hacks sind ja Browserweichen oder -filter.

                siehe wahsaga - es sind _Funktions_weichen, keine Browserweichen. Das ist nicht nur tatsächlich ein Unterschied, sondern sogar der entscheidende.

                Dazu weisen einige prominente "handelsübliche CSS-Hacks" je nach Anwendungsfall ganz erhebliche Mängel auf,

                Richtig, sie sollten mit Vorsicht eingesetzt werden. Es wurde nie etwas anderes behauptet.

                viele "handelsübliche CSS-Hacks" sind bei Änderungen im HTML neu zu überprüfen

                Änderungen in HTML sollten - abgesehen von üblicher und von vornherein zu beachtender Dynamik - nicht vorkommen. Tun sie es doch, ist der _gesamte_ CSS-Code zu überprüfen.

                deshalb ist die Idee etwa von eigenständigen Datei-Versionen für den IE durchaus auch hilfreich oder vorteilhaft bei der Entwicklung,

                Wir hatten hier gerade kürzlich erst einen Diskurs darüber, wann und wieso Conditional Comments (ich nehme an, darauf beziehst Du Dich) Sinn machen und wann eher nicht.

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. Hallo Cheatah, Hallo wahsaga,

                  Sonst hatte ich da bei meiner Betrachtung gar nicht zwischen CSS-Hacks und Browserweichen unterscheiden wollen, denn CSS-Hacks sind ja Browserweichen oder -filter.

                  siehe wahsaga - es sind _Funktions_weichen, keine Browserweichen. Das ist nicht nur tatsächlich ein Unterschied, sondern sogar der entscheidende.

                  letztlich ein (eigentlich für sich belangloses) sprachliches Problem; eine sprachliche Vereinbarung die mir entgangen wäre?

                  Wenn ich das Wort Browserweiche so verstehe dass ein Browser irgendwo hin kommt oder eben nicht, ist es eine Browserweiche, am deutlichsten wenn eine andere Datei geladen wird, aber prinzipiell gleich ob Datei -import usw.- oder einzelne Anweisung.

                  Sonst sollte vielleicht das Wort "userAgent" hinzukommen um die Bedeutung von Browserweiche so einzugrenzen wie es bei einer PHP-Weiche wohl zumindest am Anfang aussehen würde bzw. "als wer er sich ausgibt".

                  Die Oberbezeichnung "Browserweiche" scheint mir immer noch für die "filternden Vorgänge" bei CSS oder auch HTML-Kommentar die einzig mögliche, selbst wenn es nur ein einzelnes CSS-Filter wäre.

                  Oder, wenn ich einen Browser anhand seiner CSS-Fehler oder HTML-Eigenheiten eine bestimmte Datei als css laden lasse wäre es keine Browserweiche?
                  Und wenn ich einen Browser anhand seiner CSS-Fehler eine bestimmte Anweisung zukommen lasse hat es ja selten etwas mit den in der Anweisung geforderten "_fähigkeiten_", "_Funktionen_" zu tun, sondern mit browsertypischen Abweichungen die wegen anderer browsertypischen Abweichungen genutzt werden, gemeinsamer Nenner eben genau der Browser, und nicht die genutzten Techniken.

                  Mal einen Vergleich mit JavaScript, selbst wenn ich per JavaScript genau die anschliessend benutzten Fähigkeiten abfragen würde wäre es solange Unfug wie Browser Eigenschaften vorgeben können über die sie gar nicht hinreichend verfügen. Ich benötige also i.d.Praxis letztlich sehr oft Browserweichen um hinsichtlich der Fähigkeiten sicher zu gehen und Browser gezielt auszufiltern, oder ich müsste die Verfügbarkeit von Methoden sehr komplex und viel zu aufwändig nachkontrollieren, oder ich würde Fehlfunktionen zulassen nach dem Motto "wenn der Browser so blöd ist, selber schuld".

                  Dazu weisen einige prominente "handelsübliche CSS-Hacks" je nach Anwendungsfall ganz erhebliche Mängel auf,

                  Richtig, sie sollten mit Vorsicht eingesetzt werden. Es wurde nie etwas anderes behauptet.

                  Aber eine zusammnehängendere Betrachung mit dem jeweiligen Browser würde dieser nötigen "Vorsicht" und den meisten Mängeln entsprechen.

                  viele "handelsübliche CSS-Hacks" sind bei Änderungen im HTML neu zu überprüfen

                  Änderungen in HTML sollten - abgesehen von üblicher und von vornherein zu beachtender Dynamik - nicht vorkommen. Tun sie es doch, ist der _gesamte_ CSS-Code zu überprüfen.

                  Wenn die CSS-Hacks deutlicher als Browserweichen verstanden werden ist diese Überprüfung womöglich erfolgreicher oder schneller.

                  deshalb ist die Idee etwa von eigenständigen Datei-Versionen für den IE durchaus auch hilfreich oder vorteilhaft bei der Entwicklung,

                  Wir hatten hier gerade kürzlich erst einen Diskurs darüber, wann und wieso Conditional Comments (ich nehme an, darauf beziehst Du Dich) Sinn machen und wann eher nicht.

                  Auch, da war wohl deine Präferenz die einer einzigen CSS-Datei. Ich hätte wegen der Übersichtlichkeit usw. zwar auch lieber eine CSS-Datei, bin mir aber über den praktischen Nutzen nicht sicher.
                  So stelle ich z.B. bei einem Projekt fest dass ich dann früher eine zufriedenstellendes Ergebnis erhalte wenn ich mit einer Entwicklung für den IE anfange, aber zugleich auch umfangreicheren CSS-Code. Falls ich nun HTML und CSS möglichst reduziert erstmal für Mozilla und den inzwischen etwas (v)erträglicheren Opera schreibe gibt es doch recht viele Konflikte mit den IEs, die dann bei getrennten Dateien klarer und richtiger korrigiert werden können, dann auch mit weniger womöglich riskanten Hacks.
                  Die hier etablierte Empfehlung mit "richtigerm" Code für den Mozilla anzufangen ist m.E. wenig allgemeingültig und dann bei getrennten Deateien schneller oder einfacher anwendbar, und auch die Reaktionen auf "Änderungen im HTML" sind u.U. besser auzuführen.

                  Grüsse

                  Cyx23

                  1. Hi,

                    siehe wahsaga - es sind _Funktions_weichen, keine Browserweichen. Das ist nicht nur tatsächlich ein Unterschied, sondern sogar der entscheidende.
                    letztlich ein (eigentlich für sich belangloses) sprachliches Problem;

                    nein! Es geht nie, nie, nie um den Browser, sondern immer nur und ausschließlich darum, was er kann. Das ist ein gigantischer Unterschied - wie ich schon sagte: der entscheidende - und keine Haarspalterei. Eine wie auch immer geartete Weiche, die sich nach dem Browser richtet, ist *immer* ein Beweis(!) dafür, dass der Autor nicht wusste, was er tut.

                    eine sprachliche Vereinbarung die mir entgangen wäre?

                    Zwischen "ich bin"[1] und "ich kann" ist der Unterschied IMHO ziemlich deutlich.

                    Wenn ich das Wort Browserweiche so verstehe dass ein Browser irgendwo hin kommt oder eben nicht, ist es eine Browserweiche,

                    Ja, eben. Genau das ist nämlich Unsinn, weil es nicht darum geht, welcher Browser gerade vorliegt.

                    Die Oberbezeichnung "Browserweiche" scheint mir immer noch für die "filternden Vorgänge" bei CSS oder auch HTML-Kommentar die einzig mögliche, selbst wenn es nur ein einzelnes CSS-Filter wäre.

                    Sie entspricht entweder nicht der Realität, oder einem eklatant falschen Verständnis der Sachlage. Noch einmal: Der verwendete Browser ist *nie* von Belang.

                    Oder, wenn ich einen Browser anhand seiner CSS-Fehler oder HTML-Eigenheiten eine bestimmte Datei als css laden lasse wäre es keine Browserweiche?

                    Nein, das ist eine Fähigkeitenweiche, weil sie darauf beruht, welche Fähigkeiten vorliegen. Es ist völlig egal, um welchen Browser es sich handelt.

                    Und wenn ich einen Browser anhand seiner CSS-Fehler eine bestimmte Anweisung zukommen lasse hat es ja selten etwas mit den in der Anweisung geforderten "_fähigkeiten_", "_Funktionen_" zu tun,

                    Doch, ganz exakt damit.

                    sondern mit browsertypischen Abweichungen die wegen anderer browsertypischen Abweichungen genutzt werden,

                    Abweichungen in den Fähigkeiten.

                    gemeinsamer Nenner eben genau der Browser, und nicht die genutzten Techniken.

                    Nein, gemeinsamer Nenner ist das, was er kann oder nicht kann.

                    Mal einen Vergleich mit JavaScript, selbst wenn ich per JavaScript genau die anschliessend benutzten Fähigkeiten abfragen würde wäre es solange Unfug wie Browser Eigenschaften vorgeben können über die sie gar nicht hinreichend verfügen.

                    Dann ist entweder die Prüfung kaputt, oder der JavaScript-Interpreter ist dermaßen grob fehlerhaft, dass er nicht beachtet werden kann. Wenn er nicht vorhandene oder nicht funktionierende Objekte, Eigenschaften und Methoden im Boole'schen Sinne als wahr quittiert, ist die Implementierung schlicht und ergreifend nicht beachtenswert. Ich kenne auch keinen Fall, in dem das vorkäme.

                    Ich benötige also i.d.Praxis letztlich sehr oft Browserweichen um hinsichtlich der Fähigkeiten sicher zu gehen und Browser gezielt auszufiltern,

                    Dazu müsstest Du ausnahmsfrei _alle_ Browser kennen, die derzeit existieren, jemals existiert haben - und existieren werden. Das ist unmöglich. Bei der Frage nach Fähigkeit musst Du einfach nur wissen, welche Fähigkeit vorliegen muss - und das weißt Du dadurch, dass Du sie nutzen möchtest.

                    oder ich müsste die Verfügbarkeit von Methoden sehr komplex und viel zu aufwändig nachkontrollieren,

                    Nö.

                    Dazu weisen einige prominente "handelsübliche CSS-Hacks" je nach Anwendungsfall ganz erhebliche Mängel auf,
                    Richtig, sie sollten mit Vorsicht eingesetzt werden. Es wurde nie etwas anderes behauptet.
                    Aber eine zusammnehängendere Betrachung mit dem jeweiligen Browser würde dieser nötigen "Vorsicht" und den meisten Mängeln entsprechen.

                    Nein, sie wäre zu komplex.

                    Wir hatten hier gerade kürzlich erst einen Diskurs darüber, wann und wieso Conditional Comments (ich nehme an, darauf beziehst Du Dich) Sinn machen und wann eher nicht.
                    Auch, da war wohl deine Präferenz die einer einzigen CSS-Datei.

                    Nein, ich war derjenige, der mit vielen Dateien hantiert :-)

                    So stelle ich z.B. bei einem Projekt fest dass ich dann früher eine zufriedenstellendes Ergebnis erhalte wenn ich mit einer Entwicklung für den IE anfange,

                    Autsch, jetzt kann ich verstehen, dass Dir Browserweichen zusagen. Dieses Vorgehen führt fast zwangsläufig zu anders kaum behebbaren Problemen. Entwickle zunächst mit einem Mozilla und passe den Code später auf andere Browser an.

                    Falls ich nun HTML und CSS möglichst reduziert erstmal für Mozilla und den inzwischen etwas (v)erträglicheren Opera schreibe gibt es doch recht viele Konflikte mit den IEs,

                    Viele Bugs, ja. Mit ein wenig Erfahrung sind die aber auf diesem Wege leicht handhabbar, während man beim umgekehrten Weg ständig gegen harte Mauern stößt.

                    Cheatah

                    [1] Bzw. "ich behaupte zu sein".

                    --
                    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                    X-Will-Answer-Email: No
                    X-Please-Search-Archive-First: Absolutely Yes
                    1. Hallo,

                      ich fürchte wir kommen da nicht zusammen, ausser dass wir uns immerhin wohl über die Risiken einigen könnten, und wir wohl geringe Risiken bei validem, neuerem CSS vermuten; ein Stern-Selektor als CSS-Filter (meint hier übrigens Browserweiche:-) stellt ein geringes Risiko dar, während invalides CSS oder Slashorgien u.U. auch bei zuküftigen Browsern zu Parsingfehlern führen.

                      Zum JavaScript-Interpreter fällt mir spontan document.all bei diversen Operas ein ohne dass die Browser mit den Folgen klarkämen. Oder window.sidebar ist beim mir vorliegenden K-Meleon nicht ohne Scriptabbruch bzw. Fehler abfragbar. Oder Unterschiede im "gleichen" DOM, es gibt noch weitere Beispiele, die dir eigentlich auch bekannt sein dürften.

                      Grüsse

                      Cyx23

  2. Moin!

    es soll für die verschiedenen Browser verschiedene Stylesheets geladen werden. Habe das rumgepfusche satt. Läuft es endlich auf einem Browser habe ich das Aussehen für einen anderen zerstört.

    Serverseitiges Browserherumgerate IST Gepfusche ersten Ranges!

    Stelle eine Frage zu deinem CSS-Problem, alles andere hilft dir nicht weiter.

    Denn hast du wirklich vor, für alle in deiner Funktion aufgelisteten Browserversionen ein eigenes Stylesheet zu schreiben? Der Aufwand wäre doch viel zu groß.

    - Sven Rautenberg

    1. Denn hast du wirklich vor, für alle in deiner Funktion aufgelisteten Browserversionen ein eigenes Stylesheet zu schreiben? Der Aufwand wäre doch viel zu groß.

      Nein, das ist nicht meine Funktion. Habe ich nur kopiert.
      Wenn ich mir die Statistiken auf w3schools.com angucke machen es nur ein paar Browserversionen unter sich aus und deren Versionen.
      Warum nicht 4 verschiedene Stylesheets haben. Ein konformes, genau so wie es vom w3 vorgeschrieben ist. Und dann für alle egoistischen Browser das was sie haben wollen.

      1. Moin!

        Wenn ich mir die Statistiken auf w3schools.com angucke machen es nur ein paar Browserversionen unter sich aus und deren Versionen.

        Und genau das ist das Problem.

        Was haben wir denn? Einen IE6 als häufigsten Browser mit einigen bekannten und beherrschbaren Macken und etlichen Unzulänglichkeiten, auf die man leider zwingend verzichten muß, weil er das nicht kann - ohne dass man da wahnsinnig drunter leiden muß, weil es nicht allzu häufig vorkommt.

        Und dann noch: IE 5.5, IE 5.0 (beide in homöopathischen Dosen, aber mit Pech leider wichtig), und ein reichhaltiges Bukett von alternativen Browsern in einer von Microsoft nicht gekannten Versionsvielfalt, die die ganze Sache ziemlich unbeherrschbar und unvorhersagbar macht. Insbesondere auch deshalb, weil sich diese Browser in aktiver Entwicklung befinden.

        Microsoft hat die Arbeiten am IE6 ja bis auf Updates für XP aufgegeben und konzentriert sich auf den IE7 für die nächste Windows-Version. Aber Mozilla, Firefox, Opera, Konqueror (und wie sie alle heißen) bringen im Jahr zwei bis zehn neue Versionen heraus, die immer irgendwas verbessern. Vor allem die Kompatibilität mit Standards.

        Warum nicht 4 verschiedene Stylesheets haben. Ein konformes, genau so wie es vom w3 vorgeschrieben ist. Und dann für alle egoistischen Browser das was sie haben wollen.

        Ich kenne keine egoistischen Browser, die man mit einem Sonderstylesheet bedienen müßte, mal abgesehen vom Netscape 4. Alle meine Projekte bisher ließen sich problemlos mit einem einzigen Stylesheet und vollkommen ohne Browserweiche (mal abgesehen vom üblichen Javascript-Geprüfe auf getElementById und so weiter - aber das ist problemorientiert, und keine Browserweiche) realisieren.

        Deshalb erneut die Aufforderung: Stelle dein CSS-Problem hier vor, nicht die irrsinnigen Versuche, deine Probleme mit unzulänglichen Mitteln zu umgehen. Das bringt dir nichts.

        - Sven Rautenberg

  3. Hi,

    Sieht jemand das Problem?

    ja, Dein Ansatz ist Humbug. Wie willst Du einen solchen Wust von Abfragen warten? Ausserdem ist der Useragent unzuverlaessig.

    Browserabfragen solltest Du darauf beschraenken, _Faehigkeiten_ eines Browsers herauszufinden. Ansonsten kannst Du auch Css-Hacks oder Conditional Comments (IE) zum Filtern verwenden.
    Damit kannst Du - wenn ueberhaupt noetig - Gruppen zusammenfassen, und denen unterschiedliche Styles anbieten, das sollte langen.

    Gruesse, Joachim

    --
    Am Ende wird alles gut.