Start · Sprachen · JavaScript · Referenz · ContactAddress.postalCode

ContactAddress.postalCode

Eigenschaft

Schreibgeschützte Eigenschaft, die die Postleitzahl einer über die Contact Picker API ausgewählten Kontaktadresse als Zeichenkette liefert, z. B. <code>"10115"</code> oder einen US-ZIP-Code.

seit JavaScript Experimentell: Chrome für Android 80+ (Contact Pic Kategorie: webapi

Signatur

get ContactAddress.postalCode

Beschreibung

Die schreibgeschützte Eigenschaft postalCode des Interfaces ContactAddress gibt eine Zeichenkette zurück, die den Code enthält, den ein Land oder eine Region für die Postzustellung verwendet. Das ist in Deutschland die Postleitzahl (PLZ), in den USA der ZIP-Code, im Vereinigten Königreich der Postcode, in Indien der PIN-Code.

ContactAddress-Objekte bekommst du nicht direkt, sondern über die Contact Picker API: navigator.contacts.select(['address']) öffnet die native Kontaktauswahl des Geräts. Jeder ausgewählte Kontakt enthält ein Array address mit ContactAddress-Instanzen. Aus diesen kannst du postalCode zusammen mit city, addressLine oder country auslesen, zum Beispiel um ein Liefer- oder Rechnungsformular vorauszufüllen.

Der Wert wird unverändert so übernommen, wie er im Adressbuch des Nutzers steht. Das Format hängt vom Land ab und wird nicht geprüft: Er kann Buchstaben, Leerzeichen und Bindestriche enthalten (z. B. "SW1A 1AA" oder "12345-6789") und darf leer sein.

Rückgabewert

Typ
string
Beschreibung
Die Postleitzahl der Adresse als Zeichenkette. Fehlt sie im Adressbuch, ist der Wert eine leere Zeichenkette "".

Beispiele

Postleitzahl eines ausgewählten Kontakts auslesen

const button = document.querySelector('#kontakt-waehlen');

button.addEventListener('click', async () => {
  // Funktionsprüfung: API ist nur in wenigen Browsern verfügbar
  if (!('contacts' in navigator && 'ContactsManager' in window)) {
    console.warn('Contact Picker API wird nicht unterstützt.');
    return;
  }

  try {
    const [kontakt] = await navigator.contacts.select(['name', 'address']);
    const adresse = kontakt?.address?.[0];
    console.log('PLZ:', adresse?.postalCode || '(keine Angabe)');
  } catch (err) {
    console.error('Auswahl fehlgeschlagen:', err);
  }
});
PLZ: 10115

Lieferformular mit PLZ und Ort vorausfüllen

const formular = document.querySelector('#lieferadresse');

const adresseUebernehmen = async () => {
  const unterstuetzt = await navigator.contacts.getProperties();
  if (!unterstuetzt.includes('address')) return;

  const kontakte = await navigator.contacts.select(['address']);
  const adresse = kontakte[0]?.address?.[0];
  if (!adresse) return;

  formular.elements.strasse.value = adresse.addressLine.join(', ');
  // Leerzeichen am Rand entfernen, Format sonst beibehalten
  formular.elements.plz.value = adresse.postalCode.trim();
  formular.elements.ort.value = adresse.city;
  formular.elements.land.value = adresse.country;
};

document.querySelector('#aus-kontakten').addEventListener('click', adresseUebernehmen);

Alle Postleitzahlen mehrerer Kontakte sammeln und prüfen

const plzSammeln = async () => {
  const kontakte = await navigator.contacts.select(['name', 'address'], { multiple: true });

  const liste = kontakte.flatMap((k) =>
    (k.address ?? []).map((a) => ({
      name: k.name?.[0] ?? 'Unbekannt',
      plz: a.postalCode,
      // Einfache Prüfung auf deutsches Format (5 Ziffern)
      gueltigDE: /^\d{5}$/.test(a.postalCode)
    }))
  );

  console.table(liste);
  return liste;
};

document.querySelector('#sammeln').addEventListener('click', plzSammeln);
[{ name: 'Anna Schmidt', plz: '80331', gueltigDE: true }, { name: 'John Doe', plz: '90210-1234', gueltigDE: false }]

// Wichtig · Fallstricke

  • Experimentell und kaum unterstützt: Die Contact Picker API gibt es praktisch nur in Chrome für Android (ab Version 80) und in darauf aufbauenden Browsern. Desktop-Browser, Firefox und Safari unterstützen sie standardmäßig nicht. Prüfe die Verfügbarkeit immer vorher und biete eine manuelle Eingabe als Ausweichlösung an.
  • Nur in sicherem Kontext mit Nutzeraktion: navigator.contacts.select() läuft nur über HTTPS, nur im obersten Browsing-Kontext (nicht in iframes) und nur als Reaktion auf eine Nutzeraktion wie einen Klick. Sonst wird ein SecurityError oder InvalidStateError ausgelöst.
  • Ob 'address' unterstützt wird, ist nicht garantiert: Nicht jede Plattform liefert Adressen mit. Prüfe das vorher mit navigator.contacts.getProperties().
  • Leerer Wert möglich: Fehlt die Postleitzahl, bekommst du "" statt null. Prüfe also auf Leere, nicht nur auf undefined.
  • Kein festes Format: Der Wert wird nicht geprüft oder vereinheitlicht. Verlass dich nicht auf reine Ziffern. Führende Nullen (z. B. "01067") gehen verloren, wenn du den Wert in eine Zahl umwandelst – bewahre ihn deshalb immer als Zeichenkette auf.
  • Datenschutz: Adressdaten sind personenbezogen. Übertrage sie nur mit Einwilligung und nur so weit wie nötig (DSGVO).