Mike: Mobile oder nicht

Tach alle zusammen!

Habe eine Datei xxx.js mit folgenden Code:

  
function browser()  
{  
	  
// User-Agent-String auslesen  
var UserAgent = navigator.userAgent.toLowerCase();  
  
// User-Agent auf gewisse Schlüsselwörter prüfen  
if(UserAgent.search(/(iphone|ipod|opera mini|fennec|palm|blackberry|android|symbian|series60)/)>-1)  
  
{  
	document.write("mobile");  
}  
  
else  
	  
{		  
	document.write("standard");  
}  
  
}  

Auf der Seite rufe ich die Funktion so auf:

  
<script type="text/javascript">  
browser();  
</script>  

Bekomme dann den Wert mobile bzw. standard zurück und angezeigt.

Soweit so gut.

Jetzt wollte ich das ganze aber mit eine IF Abfrage abfragen. Leider bekomme ich das nicht zum laufen. Hier mal mein Versuch:

  
<script type="text/javascript">  
  if (browser() == "mobile") {  
    alert("Mobile");  
  } else {  
    alert("nicht Mobile");  
  }  
</script>  

Den Befehl alert verwende ich nur zum Testen, später soll dort Code stehen.

Was micht auch noch interssieren würde, wie weise ich document.write True bzw. False zu oder geht das nicht.

Danke für die Hilfe.

mfg mike

  1. Hallo,

    Habe eine Datei xxx.js mit folgenden Code:
    [...]
    document.write("mobile");
    document.write("standard");

    das ist das Problem.

    Auf der Seite rufe ich die Funktion so auf:

    <script type="text/javascript">

    browser();
    </script>

      
    
    > Bekomme dann den Wert mobile bzw. standard zurück und angezeigt.  
      
    Ja, das Dokument wird mit einem dieser beiden Texte ersetzt.  
      
    
    > ~~~javascript
    
    <script type="text/javascript">  
    
    >   if (browser() == "mobile")
    
    

    Den Rest ab hier kannst du dir sparen, denn mit dem Aufruf von browser() und dem darin enthaltenen document.write() wird das Dokument eliminiert.

    Was micht auch noch interssieren würde, wie weise ich document.write True bzw. False zu oder geht das nicht.

    Wie bitte? Was genau meinst du?

    Ciao,
     Martin

    --
    Gültig sind Frauen ab 16, wohlgeformt ab 160 Pfund.
      (Gunnar Bittersmann)
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hallo zusammen.

      Grundsätzlich braucht das ganz nicht zu 100% mit allen Geräten funktionieren. Da die Seite nur von mir genutzt wird. Aber halt einmal von meinen Handy und einmal von mein PC.

      Habe jetzt alles so geändert und es funktioniert. Danke!

      Aber noch ein anderes Problem. Ich möchte damit meien Style wechseln. Habe das ganze mal so probiert, aber ohne Erfolg.

      <script type="text/javascript">  
        if (browser()) {  
      </script>  
          <link rel="stylesheet" type="text/css" href="style/mobile/schriften.css" /> <!-- Style einbinden -->  
          <link rel="stylesheet" type="text/css" href="style/mobile/seite.css" /> <!-- Style einbinden -->  
      <script type="text/javascript">  
        } else {  
      </script>  
          <link rel="stylesheet" type="text/css" href="style/standard/schriften.css" /> <!-- Style einbinden -->  
          <link rel="stylesheet" type="text/css" href="style/standard/seite.css" /> <!-- Style einbinden -->  
      <script type="text/javascript">  
        {  
      </script> 
      

      nur so geht es nicht. Wie müsste ich das machen, damit zwischen den Styles gewechselt wird.

      Danke!

      mfg mike

      1. Hallo,

        Aber noch ein anderes Problem. Ich möchte damit meien Style wechseln. Habe das ganze mal so probiert, aber ohne Erfolg.

        <script type="text/javascript">

        if (browser()) {
        </script>

          
        Dass das nicht geht, ist klar: Zwischen <script> und </script> muss ausführbarer JavaScript-Code stehen, nicht nur Teile davon. Wenn der Browser auf ein <scrpit>-Tag trifft, liest er zunächst den Code bis </script> und führt ihn aus, aber nur bis zum ersten Fehler. Erst dann macht er mit dem Interpretieren von HTML weiter. Von dem:  
        `if (browser()) {`{:.language-javascript}  
        kann er nichts ausführen. Hier findet er nur einen Syntaxfehler.  
          
        Versuch' es mal mit dem media-Atrribut des <http://de.selfhtml.org/html/referenz/attribute.htm#style@title=<style>>-Elements. Das soll aber nicht sehr zuverlässig funktionieren.  
        Zitat aus dem Google-Cache (der Server aktuell.de.selfhtml.org ist anschenend zur Zeit down):  
          
        "In HTML können über das media-Attribut separate Stylesheets für unterschiedliche Ausgabemedien aufgeführt werden, jedoch liegt die Entscheidung darüber, welche Angaben verwendet werden, allein beim Browser/Ausgabegerät. Aktuell ignorieren leider noch viele mobile Ausgabegeräte die Angabe media="handheld" und greifen stattdessen auf das Standard-Stylesheet der Seite zu, das über media="all" oder media="screen" eingebunden wird."  
          
        Vielleicht versteht dein Gerät zufällig media="handheld".  
          
        Gruß, Don P  
        
        
        1. Hallo,

          ok habe ich verstanden. Leider versteht meine Gerät nicht media :( Das hatte ich erst ausprobiert.

          Wie kann man den dann die Umschaltung machen?

          mfg mike

          1. Hallo,

            Leider versteht meine Gerät nicht media :( Das hatte ich erst ausprobiert.

            Wie kann man den dann die Umschaltung machen?

            Du kannst evtl. mit JavaScript ein style-Element erzeugen und in den DOM-Baum hängen, ungefähr so.

            Zwar kenne ich mich mit den Mobiles nicht aus – habe den Konsum solcher Suchtmittel bis jetzt erfolgreich verweigert – aber wie man so hört, ist es nicht gerade einfach, dasselbe HTML/JavaScript sowohl für für normale Browser als auch Mobiles zu verwenden.

            Das Sicherste ist wahrscheinlich, wenn du eine spezielle Variante für's Handy schreibst, unter einer anderen Adresse, also etwa http//megacool.example/superPage.html für normale Browser und http//megacool.example/superPage.mobile.html für deinen nervtötenden, Fernsprechfotografiespielekonsolenbrauser ;)

            Gruß, Don P

            1. Tach,

              zwei Seiten möchte ich nicht pflegen. Habe das ganze mit zwei verschiedene CSS Styles getest und es geht so wie es soll. Es muss nur halt das richtige Style geladen werden. Aber Danke!

              nervtötenden, Fernsprechfotografiespielekonsolenbrauser

              Sorry, aber wenn alle so denken würden, hättest Du heute auch keine Internet und dem hast Du dich aus nicht entzogen, sonst würdes Du mir ja nicht schreiben... ;)

              mfg mike

              1. Hallo,

                nervtötenden, Fernsprechfotografiespielekonsolenbrauser
                Sorry, aber wenn alle so denken würden, hättest Du heute auch keine Internet

                ich finde, das eine hat mit dem anderen nichts zu tun - bzw. sollte nicht. Ein Telefon dient für mich der Kommunikation in Situationen, wo keine andere Methode in Frage kommt, notfalls auch mal unterwegs; das Internet gehört dagegen an den Schreibtisch.
                Der Trend, verschiedene Medien und Geräte mehr und mehr zu kombinieren, gefällt mir gar nicht.

                Ciao,
                 Martin

                --
                F: Was sagt die kleine Kerze zur großen Kerze?
                A: Ich gehe heute nacht aus!
                Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                1. Hallo,

                  nervtötenden, Fernsprechfotografiespielekonsolenbrauser
                  Sorry, aber wenn alle so denken würden, hättest Du heute auch keine Internet

                  ich finde, das eine hat mit dem anderen nichts zu tun - bzw. sollte nicht. Ein Telefon dient für mich der Kommunikation in Situationen, wo keine andere Methode in Frage kommt, notfalls auch mal unterwegs; das Internet gehört dagegen an den Schreibtisch.
                  Der Trend, verschiedene Medien und Geräte mehr und mehr zu kombinieren, gefällt mir gar nicht.

                  Ciao,
                  Martin

                  Ich könnte sicherlich auch ohne, aber den Komfort möchte ich nicht missen. Wenn ich meine Smartphone mit habe, habe ich fast alles was ich brauche, sonst bräuchte ich ja einen Rücksack.

                  Navigieren, Haustür öffnen, Garagentor öffnen, Heizung von unterwegs schalten, schauen was zu Hause los ist, Banking, Nachrichten abrufen, Fernseher bedienen, Terminbuch, Adressbuch und und und

                  Wie gestagt, es ist halt komfort, wie Auto fahren oder fliegen.

                  Aber jetzt bitte zu mein Problem zurück. Danke.

                  1. Hallo.

                    Mache das jetzt mit Cookies.

                      
                    <?  
                    $d = $_COOKIE["browsertyp"];  
                    if ($d=="Standard Browser"){ ?>  
                        <link rel="stylesheet" type="text/css" href="style/standard/schriften.css" /> <!-- Style einbinden -->  
                        <link rel="stylesheet" type="text/css" href="style/standard/seite.css" /> <!-- Style einbinden -->  
                    <? }else{ ?>  
                        <link rel="stylesheet" type="text/css" href="style/mobile/schriften.css" /> <!-- Style einbinden -->  
                        <link rel="stylesheet" type="text/css" href="style/mobile/seite.css" /> <!-- Style einbinden -->  
                    <? }  
                    ?>  
                      
                    
                    

                    Das geht sehr gut und ist schnell gemacht ;)

                    Danke für die Hilfen. Schönen Abend noch.

                    mfg mike

              2. Tach auch,

                nervtötenden, Fernsprechfotografiespielekonsolenbrauser

                Sorry, aber wenn alle so denken würden, hättest Du heute auch keine Internet [...] ;)

                Wieso das denn? Das Internet ist älter als Handys und es dudelt, brummt oder vibriert nicht überall wo man geht und steht. Ohne Internet würde ich es kaum aushalten, mit Mobiltelefon allerdings auch nicht :P.

                Auch verlange ich nicht, dass alle so denken. Das bisschen Freiheit sollte wenigstens noch möglich sein in der Konsumgesellschaft, dass jemand selber entscheiden kann, welchen technischen Schnickschnack er haben will und welchen nicht.

                Die Entwicklung mit den Mobiles grenzt allerdings schon an Zwang: Es gibt ja kaum noch öffentliche Telefonzellen. Manchmal will oder muss ja doch telefonieren von unterwegs, und dann kann es schon schwierig werden ohne Handy.

                Klar kann man ein Handy auch ausschalten, aber das gibt andere Schwierigkeiten: Nicht beantwortete SMS oder verweigerte Gespräche werden vom Absender schnell als Beleidigung aufgefasst. Da meine Bekannten aber alle wissen, dass ich kein Mobile habe, kann mir das nicht passieren :).

                Gruß, Don P

  2. Hallo,

    Habe eine Datei xxx.js mit folgenden Code:

    function browser()
    {

    // User-Agent-String auslesen
    var UserAgent = navigator.userAgent.toLowerCase();

    // User-Agent auf gewisse Schlüsselwörter prüfen
    if(UserAgent.search(/(iphone|ipod|opera mini|fennec|palm|blackberry|android|symbian|series60)/)>-1)

    {
    document.write("mobile");
    }

    else

    {
    document.write("standard");
    }

    }

      
    
    > Jetzt wollte ich das ganze aber mit eine IF Abfrage abfragen. Leider bekomme ich das nicht zum laufen. Hier mal mein Versuch:  
      
    deswegen wäre es viel besser, einen Wert zurückzugeben, statt ins Dokument zu schreiben, bzw. dieses, [wie Martin ausgeführt hat](https://forum.selfhtml.org/?t=205809&m=1395840), zu überschreiben.  
      
    
    > Was micht auch noch interssieren würde, wie weise ich document.write True bzw. False zu oder geht das nicht.  
      
    am allereinfachsten ist es, wenn Du verdrängst, dass es document.write() überhaupt gibt. Im Normalfall braucht man das nicht.  
      
    Schreiben wir Deine Funktion um. Als erstes möchte ich den Namen ändern. Deine Funktion soll aus dem User-Agent-String ableiten, ob es sich vermutlich um einen mobilen Browser handelt oder nicht:  
      
    function isMobileBrowser() {  
    }  
      
    mit der Implementierung, die sich an Deinem Erstentwurf orientiert:  
      
    ~~~javascript
    function isMobileBrowser() {  
        // gibt true zurück, wenn im User-Agent-String mindestens ein  
        // Schlüsselwort aus einer vorgegebenen Liste vorkommt, das auf  
        // einen mobilen Browser schließen lässt.  
        // gibt sonst false zurück  
      
        var UserAgent = navigator.userAgent.toLowerCase();  
        // User-Agent auf gewisse Schlüsselwörter prüfen  
        return (UserAgent.search(/(iphone|ipod|opera mini|fennec|palm|blackberry|android|symbian|series60)/) > -1);  
    }
    

    Besonders wartungsfreundlich ist diese Funktion nicht.
    Außerdem scheinst Du iPads nicht als mobile Plattform zu betrachten, Tablets unter Android hingegen schon.

    Zum guten Schluss möchte ich Dir noch das Buch Browser user-agent string empfehlen, das gibt's auch in einer deutschen Übersetzung.

    Freundliche Grüße

    Vinzenz