Unterschiedliches Verhalten von <button> Tag in Desktop-, Android- und iPhone-Browser

  • Hallo liebes HTML-Forum,


    für mein Raspberry Pi Projekt habe ich eine kleine Webseite eingerichtet mit der ich über das <button>-Tag Leds ansteuern kann. Hier ist zunächst ein kleiner Code-Ausschnitt:


    <

    p>Raffstore 1
    <buttonid ="btn1"onmousedown="messageToServer('btn1_onmousedown');"onmouseup="messageToServer('btn1_onmouseup');">rauf</button>
    <buttonid ="btn2"onmousedown="messageToServer('btn2_onmousedown');"onmouseup="messageToServer('btn2_onmouseup');">runter</button>
    </p>



    Was soll dieser Code nun bewirken? Drückt man einen Button, soll die Led angehen, löst man den Button wieder, soll die Led ausgehen. Also eine Taster-Funktionalität. Das Ganze funktioniert auch einwandfrei im Browser (Chrome) am Desktop-Rechner.
    Rufe ich nun diese Website über einen Browser (ebenfalls Chrome) am Android-Tablet auf, ist das Verhalten des Buttons anders. Hier bleibt der Button nach dem Betätigen aktiviert, ein neuerliches Betätigen deaktiviert den Button wieder. D.h. in diesem Fall hat der Button ein Toggle-Verhalten.
    Warum ist das so...wie kann man das Taster-Verhalten auch am Android-Tablet erreichen?


    Ein weiteres komisches Verhalten habe ich im iPhone-Browser beobachtet...da man die Buttons mit den Fingern am Smartphone / Tablet betätigen möchte, habe ich für das Padding verhältnismäßig großer Werte vergeben. Am Desktop- und Android-Tablet-Browser stimmt die Anzeige auch dementsprechend. Nur im iPhone-Browser werden die Buttons nur sehr klein angezeigt´. Nämlich dem Text des Buttons entsprechend. Warum ist das so und wie kann man die Buttons auch am iPhone größer darstellen?


    Ich bin eher ein Rookie was HTML Programmierung anbelangt, vor allem in Verbindung mit Smartphones und Tablets. Aber vielleicht hat ja irgendjemand von euch Antworten für mich?!?!
    Danke im Voraus


    lg
    Rednose


  • Hallo


    Zitat

    Warum ist das so...


    Das liegt am fehlenden hover-Effekt von Touchscreen-Geräten.


    Bei Menüs werden Untermenüs häufig durch den hover-Effekt aufgeklappt. Der Menüpunkt, der den hover-Effekt steuert, ist meist aber auch bereits mit einem Link hinterlegt.


    Wird der angeklickt, wird die damit verbundene Seite aufgerufen.


    Bei Touchscreen-Geräten könnte so nie das Untermenü aufgerufen werden. Deshalb wird bei denen mit dem ersten Klick meist das Untermenü geöffnet und erst mit einem zweiten Klick wird dem Link gefolgt.


    Das ist meiner Kenntnis nach (ich lasse mich da aber gerne verbessern) in den HTML-Regeln aber nicht vorgeschrieben, sondern jeder Browserhersteller entscheidet für sich was passiert, wenn auf Touchscreen-Geräten ein Link angeklickt wird, zu dem gleichzeitig ein hover-Effekt hinterlegt ist.


    Deshalb kann ich dir bei der Frage


    Zitat

    wie kann man das Taster-Verhalten auch am Android-Tablet erreichen?


    leider nicht weiterhelfen.


    Zitat

    Nur im iPhone-Browser werden die Buttons nur sehr klein angezeigt


    Dazu müssten wir deinen Quellcode kennen. Aus dem Bauch raus würde ich auf eine ungünstige Viewport-Angabe tippen. Heutzutage ist folgende im head-Bereich üblich


    Code
    <meta name="viewport" content="width=device-width, initial-scale=1.0">


    Falls du keine oder eine andere hast kannst du die ja mal ausprobieren.


    Gruss


    MrMurphy

  • Hallo MrMurphy,


    zunächst danke für deinen Input! Habe den <meta>-Tag hinzugefügt...hat aber leider nichts verändert :(


    Hier ist der originale Code...


    lg, Rednose

  • Hallo


    Ich habe das grade mal ausprobiert. Mit dem von mir genannten Eintrag werden die Buttons nicht so extrem verkleinert dargestellt.


    Hast du beim Testen auch den Cache gelöscht?


    Das dein CSS noch ausbaufähig ist wird dir wahrscheinlich selbst klar sein.


    Gruss


    MrMurphy

  • Wenn man erwartet, dass registrierte Maus-Eventhandler auf einem Touch-Gerät genau so funktionieren, wie bei Mausbedienung, so kann das bis zu einem gewissen Grade funktionieren, es kann aber auch schief gehen und nicht das erwartete Verhalten bringen, so wie in deinem Fall.
    Ich empfehle, abhängig vom Typ des Gerätes entweder die Maus- oder die Touch-Handler zu registrieren. Dieses habe ich auf meinem Android-Handy getestet und es funktioniert dort:

    Code
    <div id="msgbox"></div>        <button style="padding: 50px;" id ="btn1">rauf</button>        <script>            var isTouch = (('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0));            if (isTouch) {                document.getElementById("btn1").addEventListener("touchstart", function () {                    document.getElementById("msgbox").innerHTML += "tstart";                });                document.getElementById("btn1").addEventListener("touchend", function () {                    document.getElementById("msgbox").innerHTML += "tend";                });            } else {                document.getElementById("btn1").addEventListener("mousedown", function () {                    document.getElementById("msgbox").innerHTML += "mdown";                });                document.getElementById("btn1").addEventListener("mouseup", function () {                    document.getElementById("msgbox").innerHTML += "mup";                });             }
  • Hallo zusammen,


    vielen Dank für eure Beiträge!


    @ Sempervivum: werde hoffentlich am Wochenende dazu kommen dein Listing auszuprobieren, schaut sehr interessant aus.



    Zitat

    Das dein CSS noch ausbaufähig ist wird dir wahrscheinlich selbst klar sein.

    Grundsätzlich ist der aktuelle Code nur mal zum Testen...aber ich bin ganz Ohr für Tipps, um mein CSS noch weiter auszubauen ;)


    lg, Rednose

  • Hallo Sempervivum,


    danke für deinen Beitrag...es funkt nun nach meinen Vorstellungen :thumbup:
    Hier ist ein kurzer Codeausschnitt:



    Interessant wäre jetzt noch, ob man das noch eleganter lösen kann?!?!


    lg Rednose

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!