Signatur
Beschreibung
Die schreibgeschützte Eigenschaft organization des Interfaces ContactAddress enthält den Namen der Organisation, der Firma oder der Institution, die zu einer Postanschrift gehört. Ein Beispiel ist „Muster GmbH“ bei einer Geschäftsadresse.
ContactAddress-Objekte legen Sie nicht selbst an. Sie erhalten sie über die Contact Picker API: Rufen Sie navigator.contacts.select() mit der Eigenschaft 'address' auf. Das Promise liefert für jeden gewählten Kontakt ein Objekt. Dessen Feld address ist ein Array mit ContactAddress-Einträgen.
Die Eigenschaft ist nützlich, wenn Sie Formulare für Rechnungs- oder Lieferadressen im B2B-Bereich vorausfüllen wollen, etwa das Feld „Firma“. Oft ist sie aber leer, weil private Adressbuch-Einträge meist keine Organisation haben. Behandeln Sie den Wert deshalb immer als optional.
Rückgabewert
"".Beispiele
Firmennamen aus einem gewählten Kontakt auslesen
const pickCompany = async () => {
if (!('contacts' in navigator)) {
console.log('Contact Picker API wird nicht unterstützt');
return;
}
// Muss durch eine Nutzeraktion ausgelöst werden (z. B. Klick)
const [contact] = await navigator.contacts.select(['name', 'address']);
const address = contact?.address?.[0];
console.log(address?.organization || '(keine Organisation)');
};
document.querySelector('#pick').addEventListener('click', pickCompany);
Feld „Firma“ in einem Rechnungsformular vorausfüllen
const form = document.querySelector('#billing');
document.querySelector('#fromContacts').addEventListener('click', async () => {
const supported = await navigator.contacts.getProperties();
if (!supported.includes('address')) return;
const contacts = await navigator.contacts.select(['address'], { multiple: false });
const addr = contacts[0]?.address?.[0];
if (!addr) return;
form.company.value = addr.organization ?? '';
form.street.value = addr.addressLine.join(', ');
form.zip.value = addr.postalCode;
form.city.value = addr.city;
form.country.value = addr.country;
});
Alle Organisationen mehrerer Kontakte sammeln
const collectOrganizations = async () => {
const contacts = await navigator.contacts.select(['address'], { multiple: true });
const orgs = contacts
.flatMap((c) => c.address ?? [])
.map((a) => a.organization.trim())
.filter(Boolean);
console.log([...new Set(orgs)]);
};
// Wichtig · Fallstricke
- Experimentell und kaum verbreitet: Die Eigenschaft gibt es nur in Chromium-Browsern unter Android (ab Version 80). Desktop-Browser, Firefox und Safari (in der Standardeinstellung) kennen sie nicht. Prüfen Sie deshalb immer mit
'contacts' in navigatorundnavigator.contacts.getProperties(), ob die Funktion verfügbar ist. - Nur in sicherem Kontext und nach Nutzeraktion:
navigator.contacts.select()funktioniert nur über HTTPS, nur im obersten Browsing-Kontext (nicht in iframes) und nur als Reaktion auf eine Nutzeraktion wie einen Klick. - Häufig leer: Rechnen Sie mit einem leeren String oder, je nach Implementierung, mit einem fehlenden Wert. Nutzen Sie
??oder||für Standardwerte. - Schreibgeschützt: Wenn Sie der Eigenschaft etwas zuweisen, wird das ignoriert (im Strict Mode gibt es einen
TypeError). - Datenschutz: Kontaktdaten sind personenbezogen. Übertragen Sie sie nur, wenn es nötig ist, und beachten Sie die DSGVO.
- Keine HTML-Einfügung: Geben Sie den Wert nicht ungefiltert per
innerHTMLaus, sonst droht XSS. Nutzen SietextContentoder Formularwerte.