Start · Sprachen · JavaScript · Referenz · ContactAddress.sortingCode

ContactAddress.sortingCode

Eigenschaft

Schreibgeschützter String mit einem Postsortiercode, z. B. dem französischen CEDEX-Code, aus einer über die Contact Picker API gewählten Adresse.

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

Signatur

ContactAddress.sortingCode

Beschreibung

Die Eigenschaft sortingCode gehört zur Schnittstelle ContactAddress der Contact Picker API. Sie ist schreibgeschützt und liefert einen String mit einem Postsortiercode. Solche Codes gibt es nur in wenigen Ländern. Das bekannteste Beispiel ist der französische CEDEX-Code (Courrier d'Entreprise à Distribution EXceptionnelle). Damit leitet die Post Sendungen an Firmen oder Behörden mit hohem Postaufkommen gesondert weiter.

ContactAddress-Objekte erhältst du, wenn du navigator.contacts.select() mit der Eigenschaft 'address' aufrufst. Jeder ausgewählte Kontakt hat dann ein Array address mit ContactAddress-Instanzen. Die Schnittstelle ist aus PaymentAddress der Payment Request API abgeleitet und verhält sich deshalb bei den Feldern genauso.

Du brauchst sortingCode, wenn du Versand- oder Rechnungsadressen vollständig und länderkonform übernehmen willst, etwa in Formularen für Onlineshops oder CRM-Systeme. In den meisten Ländern gibt es keinen solchen Code, dann ist der Wert ein leerer String.

Rückgabewert

Typ
string
Beschreibung
Der Postsortiercode der Adresse, z. B. "CEDEX 08". Gibt es keinen Code, ist der Wert ein leerer String "".

Beispiele

Sortiercode aus einem ausgewählten Kontakt lesen

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

button.addEventListener('click', async () => {
  if (!('contacts' in navigator)) {
    console.log('Contact Picker API wird nicht unterstützt.');
    return;
  }

  try {
    const [kontakt] = await navigator.contacts.select(['name', 'address']);
    const adresse = kontakt?.address?.[0];

    if (adresse) {
      console.log('Sortiercode:', adresse.sortingCode || '(keiner)');
    }
  } catch (err) {
    console.error('Auswahl abgebrochen oder fehlgeschlagen:', err);
  }
});
Sortiercode: CEDEX 08

Französische Adresszeile mit CEDEX aufbauen

const formatiereFranzoesischeAdresse = (adr) => {
  const zeilen = [...adr.addressLine];
  // In Frankreich steht der CEDEX-Code hinter PLZ und Ort
  const ortZeile = [adr.postalCode, adr.city.toUpperCase(), adr.sortingCode]
    .filter(Boolean)
    .join(' ');
  zeilen.push(ortZeile);
  return zeilen.join('\n');
};

const [kontakt] = await navigator.contacts.select(['address']);
console.log(formatiereFranzoesischeAdresse(kontakt.address[0]));
55 rue du Faubourg Saint-Honoré 75008 PARIS CEDEX 08

Adresse per toJSON() speichern und sortingCode prüfen

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

const mitSortiercode = kontakte
  .flatMap((k) => k.address ?? [])
  .filter((adr) => adr.sortingCode !== '')
  .map((adr) => adr.toJSON());

console.log(`${mitSortiercode.length} Adresse(n) mit Sortiercode`);
localStorage.setItem('adressen', JSON.stringify(mitSortiercode));
1 Adresse(n) mit Sortiercode

// Wichtig · Fallstricke

  • Experimentell und kaum unterstützt: Die Contact Picker API gibt es nur in Chromium-Browsern auf Android (ab Version 80). Firefox, Safari und Desktop-Browser unterstützen sie nicht. Prüfe die Unterstützung vorher mit 'contacts' in navigator.
  • Nur sicherer Kontext und Nutzeraktion: navigator.contacts.select() funktioniert nur über HTTPS und nur als Reaktion auf eine Nutzeraktion, etwa einen Klick. Außerhalb einer solchen Aktion wird das Promise mit einem Fehler abgelehnt.
  • Leerer String statt null: Fehlt ein Sortiercode, ist der Wert "". Du kannst mit if (adr.sortingCode) prüfen, aber nicht mit === null.
  • Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wirft im strikten Modus keinen Fehler, bleibt aber ohne Wirkung.
  • Datenschutz: Adressen sind personenbezogene Daten. Frage nur die Eigenschaften an, die du wirklich brauchst, und speichere sie nicht ohne Einwilligung. Die DSGVO ist hier zu beachten.