AHjelset@Nortys: Opera von anderen Browsern unterscheiden

hey,

ich habe zwei fragen:

1.
wie kann man eigentlich den guten alten Opera von anderen Browsern unterscheiden?
mit get_browser() spuckt er mir nur dies aus:

stdClass Object
(
    [browser_name_regex] => ^.*$
    [browser_name_pattern] => *
    [browser] => Default Browser
    [css] => 0
    [frames] => 1
    [iframes] =>
    [tables] => 1
    [cookies] =>
    [backgroundsounds] =>
    [vbscript] =>
    [javascript] =>
    [javaapplets] =>
    [activexcontrols] =>
    [cdf] =>
    [aol] =>
    [beta] =>
    [win16] =>
    [crawler] =>
    [stripper] =>
    [wap] =>
    [netclr] =>
)

dies natürlich auch nur, wenn er sich als Opera ausgibt. jedoch wirft diese funktion bei firefox völlig identische werte, womit ich sie nicht mehr unterscheiden kann.

2.
hintergrund ist der, dass opera mit meinen navigations-divs scheinbar nicht gut kann, der firefox dies aber problemlos realisiert. ergo muss ich mir wohl eine spezialbehandlung einfallen lassen..

kennt sich jemand mit der positionierung in opera aus? kann doch nicht viel anders sein als bei den anderen browsern auch...?
er gibt die divs exakt an der stelle aus, an der sie im quellcode berechnet werden, obwohl sie eigentlich 'über' der seite liegen sollten (z-index).
die divs sind übrigens absolut positioniert und liegen direkt im body, also nicht verschachtelt. left und top werden auch korrekt berechnet aber in der darstellung ignoriert... :(

Bin für jede Hilfe dankbar!!

/Andreas

  1. Hi,

    wie kann man eigentlich den guten alten Opera von anderen Browsern unterscheiden?

    Soweit ich weiß, ist der Opera der einzige Browser, der als Logo ein rotes O hat. ;-)

    Wozu brauchst Du die Unterscheidung?
    Reicht es nicht, anhand der Fähigkeiten zu unterscheiden?

    hintergrund ist der, dass opera mit meinen navigations-divs scheinbar nicht gut kann, der firefox dies aber problemlos realisiert. ergo muss ich mir wohl eine spezialbehandlung einfallen lassen..

    die divs sind übrigens absolut positioniert und liegen direkt im body, also nicht verschachtelt. left und top werden auch korrekt berechnet aber in der darstellung ignoriert... :(

    Ohne den Code zu kennen, wäre das nur Raterei.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. sorry, mir wärs auch lieber einfach die URL zur sichtung dazulassen...

      leider ist das nicht im sinne des kunden...

      dennoch danke für deine antwort.

      /Andreas

      1. hi,

        sorry, mir wärs auch lieber einfach die URL zur sichtung dazulassen...

        leider ist das nicht im sinne des kunden...

        wo ist das problem, eine anonymisierte version bereitzustellen, wo man das problem nachvollziehen kann?

        so, wie manche leute hier posten, wollen sie scheinbar gar nicht wirklich hilfe bekommen ...

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        1. hey,
          wäre das jetzt eine kleine statische seite, so wäre das kein problem..

          leider wird der ganze haufen mit einem cms generiert, eine kurzfristig zusammengewürfelte demoseite ist ergo nicht (ohne weiteres) möglich...

          dazu kommt der aspekt, dass dies ein größerer kunde ist, der eben wert darauf legt, dass ihre neue website nicht im netz herumgeistert, bevor sie offiziell zumindest angekündigt wurde - das müssen wir akzeptieren.

          wir haben in der vergangenheit urls gepostet, was dazu geführt hat dass eben diese seite plötzlich bei google auf platz 1 stand und wir dies erst in der kundenpräsentation bemerkten. der kunde sieht es eben nicht gerne, wenn unsere entwürfe/prototypen bei google VOR ihrer aktuellen website landeen, was ich imo auch verstehen kann...

          schade dass du dich so darüber aufregst...ich habe dich und deine antworten immer sehr geschätzt und tue es immer noch...
          daher verstehe ich nicht, wieso du mich deswegen ankreidest...

          ps.: ich habe das problem übrigens mittlerweile mit hilfe der zahlreichen antworten lösen können, auch ohne url...vielen dank an alle beteiligten!

          /Andreas

          1. Hallo Andreas,

            wir haben in der vergangenheit urls gepostet, was dazu geführt hat dass eben diese seite plötzlich bei google auf platz 1 stand und wir dies erst in der kundenpräsentation bemerkten. der kunde sieht es eben nicht gerne, wenn unsere entwürfe/prototypen bei google VOR ihrer aktuellen website landeen, was ich imo auch verstehen kann...

            eine robots.txt mit
              User-agent: *
              Disallow: /
            als Inhalt funktioniert bei mir eigentlich ganz gut.

            Grüße aus Nürnberg
            Tobias

            1. Hi Tobias,

              wir haben in der vergangenheit urls gepostet

              hier?

              User-agent: *
                Disallow: /

              Das wird nicht viel helfen, wenn das Archiv besser als die eigentliche Site gewertet wird. Das erste Vorkommen einer Zeichenfolge überhaupt wird von Google sehr hoch eingestuft. Wenn der URI samt Verweis im Archiv ist und der Bot diese _hier_ findet, muss die eigentliche Site erst besser gewertet werden.

              Grüße,
               Roland

              1. Hallo Roland,

                Das wird nicht viel helfen, wenn das Archiv besser als die eigentliche Site gewertet wird. Das erste Vorkommen einer Zeichenfolge überhaupt wird von Google sehr hoch eingestuft. Wenn der URI samt Verweis im Archiv ist und der Bot diese _hier_ findet, muss die eigentliche Site erst besser gewertet werden.

                stimmt, an die Archivbeiträge habe ich jetzt nicht dran gedacht. Ich meinte aber eigentlich, dass er die Testseiten mit einer robots.txt "schützen" soll (was imho auch funktioniert) - aber gegen das Indizieren der Forenbeiträge kann man natürlich nichts machen (außer eben eine ganz andere URL nehmen und keinen kundenspezifischen Text ins Posting schreiben).

                Grüße aus Nürnberg
                Tobias

  2. Hallo,

    ich habe zwei fragen:

    wie kann man eigentlich den guten alten Opera von anderen Browsern unterscheiden?

    if(window.opera)

    Grüße
    Thomas

    1. thx a lot

      /Andreas

  3. hallo!

    1.

    also du kannst den opera u.a. mit folgendem javascript eindeutig erkennen:

    <!--
    if (navigator.userAgent.indexOf("Opera")>=0){
      var opera=1;  // DANN IST ER EIN OPERA
    }else{
      var opera=0;  // DANN IST ER KEIN OPERA
    }

    // WENN ER DANN EIN OPERA IST, KANNST DU DAS PER GET_VARIABLE
    // ÜBERTRAGEN

    if(opera){
      location.href=location.href+'?browser=opera';
    }

    // MIT EINEM PHP SCRIPT KANN DIE GET_VARIABLE browser GENAU SO
    // ÜBERNOMMEN WERDEN, DAMIT KANN MAN DANN WEITER ARBEITEN
    -->

    <?php

    if($browser=='opera'){
      mache_dies_und_das
    }

    ?>

    2.

    du hast die probleme mit den unterschiedlichen browsern nicht, wenn du vollkommen w3c komform bleibst.
    auf folgender seite kannst du deine seite auf css, html usw. checken, dir werden dann auch alle fehler angezeigt:
    http://jigsaw.w3.org/css-validator

    und besuche noch diese seite:
    http://www.csszengarden.com/

    und lerne dort alle vorzüge des css programmierens kennen.
    das ist eine anlaufstelle für alle designer.

    mfg
    stefano albrecht

    viel erfolg!

    1. Hi,

      also du kannst den opera u.a. mit folgendem javascript eindeutig erkennen:

      <!--
      if (navigator.userAgent.indexOf("Opera")>=0){
        var opera=1;  // DANN IST ER EIN OPERA

      das wage ich zu bezweifeln. Zwar verewigt sich Opera in den Standardeinstellungen im UA, aber eine Modifizierung sollte doch eigentlich möglich sein.
      Wesentlich sicherer und auch einfacher ist das schon genannte Object window.opera.

      freundliche Grüße
      Ingo

      1. Hallo,

        if (navigator.userAgent.indexOf("Opera")>=0){
          var opera=1;  // DANN IST ER EIN OPERA
        das wage ich zu bezweifeln. Zwar verewigt sich Opera in den Standardeinstellungen im UA, aber eine Modifizierung sollte doch eigentlich möglich sein.

        »Eigentlich«? Wie denn? Am Binärcode herumbasteln?

        Mathias

        1. hi,

          das wage ich zu bezweifeln. Zwar verewigt sich Opera in den Standardeinstellungen im UA, aber eine Modifizierung sollte doch eigentlich möglich sein.

          »Eigentlich«? Wie denn? Am Binärcode herumbasteln?

          firewall/proxy vorschalten ...?

          gruß,
          wahsaga

          --
          "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
          1. Hallo,

            if (navigator.userAgent.indexOf("Opera")>=0){
              var opera=1;  // DANN IST ER EIN OPERA

            das wage ich zu bezweifeln. Zwar verewigt sich Opera in den Standardeinstellungen im UA, aber eine Modifizierung sollte doch eigentlich möglich sein.

            »Eigentlich«? Wie denn? Am Binärcode herumbasteln?

            firewall/proxy vorschalten ...?

            Es ging um die JavaScript-Eigenschaft navigator.userAgent, nicht um den HTTP-User-Agent-Header. Diese kann ein Proxy schwer manipulieren. Das Überschreiben durch Einfügen von Code in jedes Dokument funktioniert nicht und das grobschlächtige Ersetzen der Zeichenkette »navigator.userAgent« durch »"irgendwas"« zwischen <script ...> und </script> ist nicht ernstzunehmen.

            Mathias

            1. hi,

              Es ging um die JavaScript-Eigenschaft navigator.userAgent, nicht um den HTTP-User-Agent-Header.

              mea culpa!

              gruß,
              wahsaga

              --
              "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        2. Hi,

          »Eigentlich«? Wie denn? Am Binärcode herumbasteln?

          Das wäre zwar eine Möglichkeit, widerspräche aber dem end user license agreement.
          Ich habe mich noch nicht so intensiv mit Opera auseinandergesetzt... Du meinst tatsächlich, daß Opera keine legale Möglichkeit bietet, den UA entsprechend zu modifizieren?

          freundliche Grüße
          Ingo

          1. Hi Ingo,

            Ich habe mich noch nicht so intensiv mit Opera auseinandergesetzt... Du meinst tatsächlich, daß Opera keine legale Möglichkeit bietet, den UA entsprechend zu modifizieren?

            davon würde ich ausgehen, denn die Browserkennung ist auch per opera6.ini nicht manipulierbar.

            Grüße,
             Roland

        3. ja er hat recht.

          man kann bei opera einstellen, als welche art von browser er erkannt werden soll. aber in den standart-einstellungen ist das auf "opera" gesetzt.

          1. Hi,

            man kann bei opera einstellen, als welche art von browser er erkannt werden soll. aber in den standart-einstellungen ist das auf "opera" gesetzt.

            darum geht's doch garnicht. Die Abfrage war indexOf - und Opera hängt seine Kennung auch bei anderen Einstellungen hinten dran.

            freundliche Grüße
            Ingo

            1. Hi,

              man kann bei opera einstellen, als welche art von browser er erkannt werden soll. aber in den standart-einstellungen ist das auf "opera" gesetzt.
              darum geht's doch garnicht. Die Abfrage war indexOf - und Opera hängt seine Kennung auch bei anderen Einstellungen hinten dran.

              na dann verstehe ich dein problem nicht

              1. Hi,

                Opera hängt seine Kennung auch bei anderen Einstellungen hinten dran.

                na dann verstehe ich dein problem nicht

                wieso Problem und wieso meines? window.opera funktioniert doch.
                Meine Mutmaßung war lediglich, daß der UA über die Standardeinstellungen hinaus manipulierbar sei.
                Aber die Abfrage des UA ist ja bereits aus anderen Gründen, die wahsaga angerissen hat, nicht zuverlässig.

                freundliche Grüße
                Ingo

      2. danke, somit sollte dieses problem hoffentlich gelöst werden...

        /Andreas

      3. hi,

        Wesentlich sicherer und auch einfacher ist das schon genannte Object window.opera.

        hier http://de.selfhtml.org/dhtml/beispiele/dhtml_bibliothek.htm#quelltext
        gibts ein schönes beispiel.
        Gruss
        Alain

    2. danke für die sehr ausführliche antwort, ich werde alle w3c-links durchgehen und meinen code dementsprechend überarbeiten..

      /andreas

      1. kein problem

        viel erfolg noch :)

    3. Hi,
      ich habe auch den Opera,
      bei mir spinnt er auch etwas mit den divs und css.
      Auch http://jigsaw.w3.org/css-validator hat keine Fehler gebracht.
      Konkret;: meine navi hat 5 Elemente nebeneinander, manchnmal zeigt er 3 nebeneinander an, 2 dann darunter....
      Stefan

  4. Salut Andreas!

    zu Pkt 2:
    So ein ähnliches Problem hatte ich auch schon mal! Hast du die Positionierungkoordinaten mit der Hand eingegeben? Wenn ja, klick die einzelnen Layer mal an, und richte sie mit den Pfeiltasten aus!

    Klingt nach einer sehr eigenartigen Lösung, aber bei mir hats geholfen. Und probieren geht ja bekanntlich über studieren!

    mfg
    dave

    1. hi,

      So ein ähnliches Problem hatte ich auch schon mal! Hast du die Positionierungkoordinaten mit der Hand eingegeben? Wenn ja, klick die einzelnen Layer mal an, und richte sie mit den Pfeiltasten aus!

      redest du hier von irgendeinem wysiwyg-editor ...?

      Klingt nach einer sehr eigenartigen Lösung

      ja, das tut wysiwyg in meinen ohren allgemein.

      gruß,
      wahsaga

      --
      "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
      1. das ist in der tat ein interessanter aspekt...
        hab ganz vergessen dass die top/left-werte der divs dynamisch berechnet werden, ausgehend von der position des hauptmenü-divs...

        somit ist eh nix mit pfeiltasten-positionerung...

        dennoch thx für deinen vorschlag!

        /Andreas

    2. danke, das werd ich probieren!

      /Andreas