Start · Sprachen · JavaScript · Referenz · ContactAddress.organization

ContactAddress.organization

Eigenschaft

Schreibgeschützter String mit dem Namen der Organisation, Firma oder Institution, die zu einer über die Contact Picker API gewählten Adresse gehört.

seit JavaScript Experimentell: Chrome/Edge für Android 80+, nicht Kategorie: webapi

Signatur

ContactAddress.organization

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

Typ
string
Beschreibung
Name der Organisation, Firma oder Institution an der Adresse. Gibt es keine Angabe, ist der Wert ein leerer String "".

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);
Muster GmbH

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)]);
};
["Muster GmbH", "Beispiel AG"]

// 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 navigator und navigator.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 innerHTML aus, sonst droht XSS. Nutzen Sie textContent oder Formularwerte.