Antwort an „Felix Riesterer“ verfassen

Lieber Nico,

Manchmal ists gut, wenns einfach läuft, find ich 😀

also ich finde es gut, wenn es immer „einfach läuft“. 😉

Was ich aber mit removeEventListener() heilen konnte.

Soso, „heilen konnte“? Aus meiner Sicht hattest Du da etwas gebaut, das repariert gehört, weil seine Struktur nicht wirklich sinnvoll ist. Deine „Heilung“ ist in Wirklichkeit ein sogenannter Hack, oder schöner formuliert: ein „Hotfix“.

Zum Verständnis: Du willst, dass gewisse Buttons mittels Eventlistener-Funktionen gewisse Funktionalitäten erhalten. Soweit OK. Dass Du diese aber jedes Mal auf Knopfdruck erneut zuweist, anstatt beim Laden der Seite nur einmal, sodass Du sie auch jedes Mal wieder entfernen musst, anstatt sie lassen zu können, zeigt, dass Deine Vorgehensweise verbesserbar ist. Hier ein Beispiel:

document.addEventListener('DOMContentLoaded', function () {

  const
    button = document.getElementById("button"),
    dialog = document.getElementById("dialog"),
    dialog_ok = document.getElementById("dialog_ok"),
    dialog_abbr = document.getElementById("dialog_abbr");

  // alle Zutaten vorhanden?
  if (button && dialog && dialog_ok && dialog_abbr) {

    button.addEventListener("click", e => {
      // nur wenn noch nicht geöffnet
      if (!dialog.open) {
        dialog.showModal();
      }
    });

    dialog_abbr.addEventListener("click", e => {
      console.log("Abbrechen-Button");
      dialog.close();
    });

    dialog_ok.addEventListener("click", e => {
      console.log("OK-Button");
      dialog.close();
    });

    document.addEventListener("keydown", e => {
      if (dialog.open && "Enter" == e.key) {
        console.log("Enter-Taste");
        dialog.close();
      }
    });
  }
});

Das Beispiel zeigt, wie man die Eventlistener-Funktionen nur einmal dauerhaft im Dokument registriert. Das ist verlässlicher, als das nur beim Klicken eines Buttons zu tun, denn solange das Dialogfenster nicht geöffnet ist, stört es ja nicht, wenn die Eventlistener da sind, da sie im obigen Beispiel ja prüfen, ob sie gerade überhaupt gebraucht werden.

Liebe Grüße

Felix Riesterer

freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen