Start · Sprachen · JavaScript · Referenz · ContactAddress.addressLine

ContactAddress.addressLine

Eigenschaft

Schreibgeschütztes Array von Zeichenfolgen mit den freien Adresszeilen (z. B. Straße, Hausnummer, Zusatz) einer über die Contact Picker API gewählten Adresse.

seit JavaScript Experimentell: nur Chrome/Edge für Android (ab Chr Kategorie: webapi

Signatur

ContactAddress.addressLine

Beschreibung

Die Eigenschaft addressLine der Schnittstelle ContactAddress liefert ein schreibgeschütztes Array von Zeichenfolgen. Jeder Eintrag steht für eine Adresszeile, die in keiner der anderen, strukturierten Eigenschaften (city, postalCode, country, region usw.) enthalten ist – typischerweise Straße und Hausnummer, Hinterhaus, Stockwerk, c/o-Angaben oder Firmenzusätze.

ContactAddress-Objekte erhält man über die Contact Picker API: Ruft man navigator.contacts.select() mit der Eigenschaft 'address' auf, enthält jeder gewählte Kontakt ein Array address mit ContactAddress-Instanzen. Die Schnittstelle erbt von PaymentAddress, weshalb Aufbau und Bedeutung von addressLine identisch zur (inzwischen veralteten) Payment-Request-Adresse sind.

Die Reihenfolge der Zeilen entspricht der Reihenfolge, wie sie im Adressbuch hinterlegt ist. Anzahl und Inhalt sind länderabhängig und nicht normiert – das Array kann leer sein, eine einzige Zeile oder mehrere enthalten. Für die Anzeige verbindet man die Zeilen üblicherweise mit Zeilenumbrüchen oder Kommas.

Rückgabewert

Typ
ReadonlyArray<string>
Beschreibung
Ein eingefrorenes Array von Zeichenfolgen; jede Zeichenfolge ist eine Adresszeile. Kann leer sein, wenn keine freien Adresszeilen hinterlegt sind.

Beispiele

Adresszeilen eines gewählten Kontakts ausgeben

const pickAddress = async () => {
  if (!('contacts' in navigator)) {
    console.log('Contact Picker API nicht verfügbar');
    return;
  }
  // Muss in einem Klick-Handler (Nutzeraktion) aufgerufen werden
  const [contact] = await navigator.contacts.select(['name', 'address']);
  const address = contact?.address?.[0];
  if (address) {
    console.log(address.addressLine);
  }
};

document.querySelector('#pick').addEventListener('click', pickAddress);
["Musterstraße 12", "3. OG links"]

Lieferformular automatisch befüllen

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

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

  const [street = '', ...extra] = addr.addressLine;
  document.querySelector('#street').value = street;
  document.querySelector('#street2').value = extra.join(', ');
  document.querySelector('#zip').value = addr.postalCode;
  document.querySelector('#city').value = addr.city;
};

document.querySelector('#import').addEventListener('click', fillShippingForm);

Vollständige Adresse als Etikett formatieren

const formatLabel = (addr) => [
  addr.recipient,
  ...addr.addressLine,
  `${addr.postalCode} ${addr.city}`.trim(),
  addr.country
].filter(Boolean).join('\n');

// addr stammt aus navigator.contacts.select(['address'])
console.log(formatLabel({
  recipient: 'Erika Mustermann',
  addressLine: ['Musterstraße 12', 'c/o Beispiel GmbH'],
  postalCode: '10115',
  city: 'Berlin',
  country: 'DE'
}));
Erika Mustermann Musterstraße 12 c/o Beispiel GmbH 10115 Berlin DE

// Wichtig · Fallstricke

  • Experimentell und stark eingeschränkt: Die Contact Picker API ist nur in Chrome/Edge auf Android (ab Version 80) verfügbar, nicht auf dem Desktop, nicht in Firefox und nicht in Safari (dort höchstens hinter einem Flag). Immer per 'contacts' in navigator und navigator.contacts.getProperties() prüfen.
  • Nur in einem sicheren Kontext (HTTPS), im Top-Level-Frame und als Reaktion auf eine Nutzeraktion (z. B. Klick) aufrufbar – sonst wird das Promise abgelehnt.
  • Das Array ist eingefroren: push() oder direkte Zuweisungen schlagen fehl bzw. werfen im Strict Mode einen TypeError. Zum Bearbeiten zuerst kopieren, z. B. [...addr.addressLine].
  • Das Array kann leer sein; nicht davon ausgehen, dass addressLine[0] immer die Straße enthält. Struktur und Reihenfolge hängen vom Adressbuch und vom Land ab.
  • Adressen sind personenbezogene Daten – nur anfordern, was wirklich benötigt wird, und Datenschutzvorgaben (DSGVO) beachten.