Signatur
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
"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);
}
});
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]));
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));
// 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 mitif (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.