glowhead: Browserabhängige Weiterleitung

Moin liebes Forum!
Da mein Mozilla nen paar Anweisungen besser / einfacher / unkomplizierter (z.B. zwei Eventhändler in einem <input type="radio">) versteht, möchte ich eine spezielle Variante meiner Seite für den Drachen unter den Browsern schreiben! Die folgende function funktioniert zwar im IE und auch das Netscape macht keine mucken, denn die Standart belegung im Frameset ist die für Netscape! Na, ja hier die function:

function autowahl() {
 alert (navigator.userAgent)
 if (navigator.appName=='Microsoft Internet Explorer') {
  document.location.replace ("willk_ie.htm");
 }
 if (navigator.userAgent=='Mozilla/5.0 (X11; U; SunOSsun4u; en-US; rv:1.2b) Gecko/20021024') {
  document.location.replace ("willk_mo.htm");
 }
}

Ich seh selber das das eigentlich ne ziehmlich aufwendige Methode wird wenn ich die ganzen userAgents, der verschiedenen Mozilla Versionen, einzeln in der Funktion eintragen muss! Kann aber beim besten willen keine einfachere Lösung finden, um zwischen Mozilla und Netscape sauber zu unterscheiden!
Danke für eure Hilfe und Tipps! mfg glowhead

  1. Hi,

    Da mein Mozilla nen paar Anweisungen besser / einfacher / unkomplizierter (z.B. zwei Eventhändler in einem <input type="radio">) versteht, möchte ich eine spezielle Variante meiner Seite für den Drachen unter den Browsern schreiben!

    Browserweichen sind Unsinn. Immer. In diesem Fall willst Du Dir mit einer aufwändigen Funktion zusätzliche Arbeit schaffen, weil Du Deine Seiten doppelt vorhälst.

    alert (navigator.userAgent)

    Das navigator-Objekt ist beinahe so nutzfrei wie das screen-Objekt. Nutze es _nicht_.

    document.location.replace ("willk_ie.htm");

    location war noch nie ein Objekt von document. Siehe Archiv.

    if (navigator.userAgent=='Mozilla/5.0 (X11; U; SunOSsun4u; en-US; rv:1.2b) Gecko/20021024') {

    Jiautsch. Mein Mozilla meldet sich übrigens als SuSE.ruth.

    Kann aber beim besten willen keine einfachere Lösung finden,

    Lass Mozilla die Funktionen ausführen, die Mozilla kann, und die ignorieren, die für diejenigen Browser sind, die die Funktionen nicht können, die Mozilla kann. Das geht in _einem_ HTML-Code.

    Cheatah

    --
    X-Will-Answer-Email: No
    1. Hey Danke erstmal für die Tipps!
      Wenn ich also die mozilla seite als Standart lade und der Funktion sage das mozilla sie nicht beachten soll (also nur die browser die funktion ausführn, die sie auch können) wäre mein problem gelöst, seh ich auch so! Weiß aber nicht wie ich mozilla das sage????(ich bekomm mit dem scheiß navigator ja noch nichtmal netscape und mozilla sauber voneinander getrennt!) Gibt es noch andere selectier-objekte?
      Ich will diese Auswahl aber auf jeden Fall treffen, weil sonst gewisse andere sachen nicht funktioniern, die ich für die jeweiligen browser mir erarbeitet hab!

      danke mfg glowhead

      1. hi,

        Weiß aber nicht wie ich mozilla das sage????(ich bekomm mit dem scheiß navigator ja noch nichtmal netscape und mozilla sauber voneinander getrennt!)

        warum ist der browser Sch* wenn Du Dich mit JS-Methoden nicht auskennst?

        Gibt es noch andere selectier-objekte?

        es gibt ueberhaupt keine selectier-objekte. Es gibt Objekte, und ihre Methoden. Dadurch lassen sich Browser herausfinden. Mozilla kann man z. B. so finden:

        var moz =  !!(document.captureEvents  &&  document.documentElement);
        alert(moz);

        Ich will diese Auswahl aber auf jeden Fall treffen, weil sonst gewisse andere sachen nicht funktioniern, die ich für die jeweiligen browser mir erarbeitet hab!

        frage die jeweiligen Objecte/Methoden ab. Nc4x z. B:

        var  = !!(document.captureEvents  && !document.getElementById);

        mehr im Archiv...

        Gruss  Joachim

      2. Hi,

        Wenn ich also die mozilla seite

        was ich Dir sagen wollte: Es gibt keine Mozilla-Seite. Es gibt nur _eine_ Seite, welche sowohl Mozilla als auch alle anderen Browser bestmöglich bedient - wobei Dir völlig egal ist, ob es sich um einen Mozilla handelt oder um einen völlig anderen Browser, der ähnlich mächtig ist wie Mozilla. Hauptsache er kann das, was Du machen willst; und das lässt sich prüfen.

        Nebenbei:

        als Standart

        "Standarte" schreibt man mit "e" am Schluss. Oder meinst Du "Standard"?

        (ich bekomm mit dem scheiß navigator ja noch nichtmal netscape und mozilla sauber voneinander getrennt!)

        Wie ich schon sagte: Das navigator-Objekt ist nutzfrei.

        Gibt es noch andere selectier-objekte?

        Ja: Die Objekte (oder Methoden), die Du benutzen möchtest. Frage nach deren Existenz. Das reicht.

        Ich will diese Auswahl aber auf jeden Fall treffen, weil sonst gewisse andere sachen nicht funktioniern, die ich für die jeweiligen browser mir erarbeitet hab!

        Konzeptfehler.

        Cheatah

        --
        X-Will-Answer-Email: No
    2. Hi,

      Browserweichen sind Unsinn. Immer.

      _Falsch_
      Ich nutze ssi-Weichen, um z.B. Menu- und Werbungsblöcke aus den Suchmaschinen rauszuhalten, und finde das äusserst sinnvoll.

      Cheatah bei einer unpräzisen Aussage erwischt, dass ich das noch erleben darf ... *g*

      Greetings

      1. Hi,

        Browserweichen sind Unsinn. Immer.

        _Falsch_
        Ich nutze ssi-Weichen, um z.B. Menu- und Werbungsblöcke aus den Suchmaschinen rauszuhalten, und finde das äusserst sinnvoll.

        Sinnvoll? Naja.

        aber vor allem ist es keine "Browser"weiche oder sind Suchmaschinen-robots Browser?

        Struppi.

      2. Hi,

        Ich nutze ssi-Weichen, um z.B. Menu- und Werbungsblöcke aus den Suchmaschinen rauszuhalten, und finde das äusserst sinnvoll.

        und wie unterscheidest Du serverseitig eine Suchmaschine von einem Browser, der sich als Suchmaschine ausgibt?

        Browserweichen _sind_ Unsinn. Immer.

        Cheatah bei einer unpräzisen Aussage erwischt, dass ich das noch erleben darf ... *g*

        Ich habe mich schon öfter unpräzise oder auch falsch ausgedrückt.

        Cheatah

        --
        X-Will-Answer-Email: No
  2. Moin

    Kann aber beim besten willen keine einfachere Lösung finden, um zwischen Mozilla und Netscape sauber zu unterscheiden!

    Was spricht gegen die Abfrage der Moeglichkeiten?

    if (document.getElementById) // Aktuelle Browser
    {browser = 'DOM';}
    if (document.layers) // NN 4.x
    {browser = 'Netscape';}

    Gruesse
    Wilhelm

    --
    Q: Warum gibt es in LinuxLand so viele Trolljaeger?
    A: Weil dort die groessten Exemplare wohnen.
    1. moin Wilhelm!

      Wenn ich diese Möglichkeit der Abfrage verstehn würde, könnte ich auch sagen ob da wat gegenspricht! Unter getElementById steht bei mir im schlauen Buch ich müsse dann auch im html-code die ID setzen! Oder gibt es die ID DOM im mozilla als standart? Das mit den layers versteh ich absolut nicht! Kannst du vieleicht ne bischen längere Erklärung für einen unerfahrenne scripter geben?
      Danke im vorraus Wilhelm! mfg glowhead

      if (document.getElementById) // Aktuelle Browser
      {browser = 'DOM';}
      if (document.layers) // NN 4.x
      {browser = 'Netscape';}

      1. Hi,

        Wenn ich diese Möglichkeit der Abfrage verstehn würde, könnte ich auch sagen ob da wat gegenspricht! Unter getElementById steht bei mir im schlauen Buch ich müsse dann auch im html-code die ID setzen!

        nein - dann hieße die Abfrage

        if (document.getElementById('id'))

        und nicht

        if (document.getElementById)

        Hiermit prüfst Du, ob die Methode einen (im boole'schen Sinne) wahren Wert zurückliefert - teste es mal mit

        alert(document.getElementById)

        Dies tue bei _jeder_ Methode und _jedem_ Objekt, welches nicht seit JavaScript 1.0 und systemunabhängig vorauszusetzen ist. Also auch bei document.images und window.print.

        Kannst du vieleicht ne bischen längere Erklärung für einen unerfahrenne scripter geben?

        Die findest Du im Archiv.

        Cheatah

        --
        X-Will-Answer-Email: No
      2. Moin

        Wenn ich diese Möglichkeit der Abfrage verstehn würde, könnte ich auch sagen ob da wat gegenspricht! Unter getElementById steht bei mir im schlauen Buch ich müsse dann auch im html-code die ID setzen! Oder gibt es die ID DOM im mozilla als standart? Das mit den layers versteh ich absolut nicht!

        Die Abfrage lautet auf unterstuetzte Methoden

        if (document.getElementById) // Aktuelle Browser
        {browser = 'DOM';}

        Wenn die Methode getElementByID unterstuetzt wird, handelt es sich um einen Browser mit dem DOM des W3C

        if (document.layers) // NN 4.x
        {browser = 'Netscape';}

        Die Methode document.Layers wird _nur_ von NN4.x unterstuetzt.

        Du kannst es natuerlich erweitern

        Wenn document.all und nicht getElementById, dann ist es ein IE4
        Fuer Opera bis 6.x kannst Du auch noch window.opera abfragen.

        Kannst du vieleicht ne bischen längere Erklärung für einen unerfahrenne scripter geben?

        Dann wuerde ich erst mal langsam machen und nicht fuer jeden x-beliebigen Browser Extraloesungen wursteln. ;-)

        Gruesse
        Wilhelm

        --
        Q: Warum gibt es in LinuxLand so viele Trolljaeger?
        A: Weil dort die groessten Exemplare wohnen.
        1. Moin

          Fuer Opera bis 6.x kannst Du auch noch window.opera abfragen.

          Kann natuerlich auch unter 7. funktionieren, weiss ich aber nicht, da ich dieses schrottige (subjektiv) Teil wieder geloescht habe.

          Gruesse
          Wilhelm

          --
          Q: Warum gibt es in LinuxLand so viele Trolljaeger?
          A: Weil dort die groessten Exemplare wohnen.
  3. Moin liebes Forum!
    Da mein Mozilla nen paar Anweisungen besser / einfacher / unkomplizierter (z.B. zwei Eventhändler in einem <input type="radio">) versteht, möchte ich eine spezielle Variante meiner Seite für den Drachen unter den Browsern schreiben! Die folgende function funktioniert zwar im IE und auch das Netscape macht keine mucken, denn die Standart belegung im Frameset ist die für Netscape! Na, ja hier die function:

    Das klingt ganz und gar nicht logisch. Was sind zwei Eventhandler? Das kann sogar NC 4.x.

    function autowahl() {
     alert (navigator.userAgent)
     if (navigator.appName=='Microsoft Internet Explorer') {
      document.location.replace ("willk_ie.htm");
     }
     if (navigator.userAgent=='Mozilla/5.0 (X11; U; SunOSsun4u; en-US; rv:1.2b) Gecko/20021024') {
      document.location.replace ("willk_mo.htm");
     }
    }

    Das ist eine sinnlose Browserweiche.

    Du solltest uns zeigen, was in willk_ie und willk_mo unterschiedlich ist und warum du meinst es geht nicht so das es in allen Browsern funktioniert.

    Struppi.