Rolf B: überraschend einfache JS-Lösung für autocomplete="off"

Beitrag lesen

problematische Seite

Hallo Linuchs,

das ist jetzt eine Feinheit von HTML und JavaScript, bei der man genau aufpassen muss.

Im HTML gibt es Attribute. In <input type="text" autocorrect="off"> steht das autocorrect-Attribut.

In JavaScript kannst Du diese Attribute generisch mit getAttribute / setAttribute ansprechen.

Ein HTML Element wird aber für JavaScript nicht generisch durch ein Objekt mit der HTMLElement-Schnittstelle repräsentiert, sondern durch eine davon abgeleitete, speziellere Schnittstelle. Dieses Schnittstelle verleiht dem JavaScript-Objekt Methoden und Eigenschaften. Das input type="text" Element wird durch ein JavaScript-Objekt mit der Schnittstelle HTMLInputElement repräsentiert.

Nun ist es so, dass diejenigen HTML-Attribute, die laut Spezifikation zu einem bestimten Element gehören, sich auf JavaScript-Seite fast immer als Objekt-Eigenschaften wiederfinden. D.h. ob ich nun elem.autofocus=true oder elem.setAttribute("autofocus", "true") schreibe, läuft auf's gleiche hinaus, weil die autofocus-Eigenschaft genau das gleiche tut: sie ändert das Attribut.

Problematisch wird es, wenn Du autocorrect verwendest. Das autocorrect-Attribut ist eine Safari-Erweiterung. Heißt: Du kannst es nach Lust und Laune mit deinem HTML Editor setzen, und Du kannst es auch mit getAttribute/setAttribute lesen und ändern. Aber NUR in einem Safari-Browser kannst Du erwarten, den Wert des autocorrect Attributs in der autocorrect-Eigenschaft wiederzufinden. Wenn überhaupt. Es kann genauso gut sein, dass Safari dieses Attribut nicht mit einer Eigenschaft unterstützt; das musst Du im Safari testen.

Und wenn Du die Eigenschaft im Script verwendest, wirst Du höchstens in einem Safari true oder false vorfinden. Vielleicht auch "on" und "off" - keine Ahnung. Ich habe keinen Mac und kein iPhone, und ich weiß auch nicht, ob sich Mac-Safari und iSafari gleich verhalten. Die Spezifikation des DOM schreibt nichts dazu. Kann sie nicht, es ist ja Safari-spezifisch.

Für solche browserspezifischen Attribute ist es besser, wenn man getAttribute und setAttribute verwendet. JavaScript-Eigenschaften verwendet man besser nur für solche Attribute, für die es spezifizierte Eigenschaften gibt.

Rolf

--
sumpsi - posui - obstruxi
0 65

Browser pfuscht bei <input> dazwischen

Linuchs
  • html
  1. 1
    Der Martin
    • formulare
    • html
    1. 0
      Linuchs
      1. 0
        Linuchs
      2. 0
        Der Martin
        1. 0
          Linuchs
          1. 0
            Auge
            1. 0
              Der Martin
          2. 0
            Der Martin
          3. 0
            Rolf B
      3. 0
        Gunnar Bittersmann
        • browser
      4. 0
        Der Martin
        1. 0
          Gunnar Bittersmann
          • browser
          1. 0
            Auge
            • browser
            • linux
            1. 0
              Gunnar Bittersmann
              • menschelei
          2. 0
            Der Martin
            1. 0
              Auge
          3. 0
            Linuchs
            1. 0
              Auge
              • browser
              • linux
              1. 0
                Linuchs
                1. 0
                  Linuchs
                  1. 0
                    Auge
                    1. 0
                      Linuchss
                      1. 0
                        Linuchs
                        1. 0
                          Auge
                          • linux
                        2. 0
                          Der Martin
                          1. 0
                            Auge
                            • linux
                            1. 0
                              Der Martin
  2. 0
    Gunnar Bittersmann
    1. 0
      Gunnar Bittersmann
      1. 0
        Linuchs
        1. 0
          Gunnar Bittersmann
          1. 0
            MudGuard
            1. 0
              Gunnar Bittersmann
    2. 2
      dedlfix
      • menschelei
      1. 0
        Gunnar Bittersmann
        1. 0
          Gunnar Bittersmann
          • html
        2. 0
          dedlfix
          1. 0
            Der Martin
            • meinung
            • menschelei
            1. 0
              Gunnar Bittersmann
              1. 0
                Tabellenkalk
                1. 0
                  Der Martin
                  1. 0
                    Tabellenkalk
                    1. 0
                      Der Martin
                2. 0
                  Gunnar Bittersmann
                  • menschelei
              2. 0
                Der Martin
              3. 0
                dedlfix
                1. 0
                  Rolf B
                  1. 3
                    ottogal
          2. 0
            Rolf B
            1. 2
              dedlfix
              1. -1
                Gunnar Bittersmann
                1. 0
                  Matthias Scharwies
                  1. 0
                    Gunnar Bittersmann
              2. -1
                Gunnar Bittersmann
            2. 0
              Linuchs
              • menschelei
              • zeichencodierung
              1. 0
                Der Martin
                1. 0
                  Gunnar Bittersmann
                  • css
                  • html
                  • javascript
                  1. 0
                    Der Martin
                    1. 0
                      Gunnar Bittersmann
          3. 0
            Gunnar Bittersmann
  3. 0

    überraschend einfache JS-Lösung für autocomplete="off"

    Linuchs
    • html
    • javascript
    1. 1
      Der Martin
      1. 0
        Linuchs
        1. 0
          Rolf B