Hallo Matthias
Der Parameter Adresse der open aus dem Mausklickevent übergeben wird ist doch eigentlich unbrauchbar - wie funktioniert das denn dann?
Ich finde, bloß auf das Wiki zu verweisen ist hier nicht übermäßig hilfreich, denn das verlinkte Beispiel ist tatsächlich irreführend. Ein Auszug aus dem Quelltext:
function init() {
var buttonEins = document.getElementById('eins');
buttonEins.addEventListener('click', fensterOeffnen);
}
function fensterOeffnen (Adresse) {
var text ='<p>ein neues Fenster!<br>(Besser wäre aber auf solche Popup-Boxen zu verzichten!)</p>';
var MeinFenster = window.open(Adresse, "Zweitfenster", "width=300,height=400,left=100,top=200");
MeinFenster.document.write(text);
MeinFenster.focus();
}
window.addEventListener('DOMContentLoaded', init);
Die dazugehörige Beschreibung aus dem Artikel:
„Das Beispiel enthält einen normalen Button. Sobald er angeklickt wird, wird die Funktion fensterOeffnen() aufgerufen. Die Funktion nimmt dementsprechend als ersten Funktionsparameter die Adresse entgegen, die in einem neuen Fenster geöffnet werden soll. Sie ruft die open()-Methode mit dieser Adresse auf.“
Die Funktion mag als ersten Parameter eine Adresse erwarten, aber entgegen nimmt sie hier das Ereignisobjekt, mit dem die Funktion beim Klick auf den Button aufgerufen wird.
Was hier im Wesentlichen passiert ist also Folgendes:
button.addEventListener('click', (event) => window.open(event, 'name'));
Da der Browser mit dieser Angabe nichts Anfangen kann, wird standardmäßig ein leeres Fenster erzeugt. Man könnte also auch gleich 'about:blank'
schreiben oder einen leeren String übergeben.
Über das Ereignisobjekt und die in ihm gespeicherten Referenzen kann natürlich eine Adresse bereitgestellt werden, aber das passiert hier nicht.
Ich habe das Beispiel und den Artikel entsprechend angepasst.
Viele Grüße,
Orlok