"open": wie kann denn das Beispiel funktionieren
mathefritz
- javascript
Der Parameter Adresse der open aus dem Mausklickevent übergeben wird ist doch eigentlich unbrauchbar - wie funktioniert das denn dann? Das folgende Minimalbeispiel klappt jedenfalls nicht.
<html>
<head>
<title></title>
<meta content="">
<style></style>
</head>
<body>
<button type=button id='b'>fenster</button>
<script>document.getElementById('b')
.addEventListener('click',fo);
function fo(a){w = window.open(a, 'x','');}
</script>
</body>
</html>
Hallo mathefritz,
Der Parameter Adresse der open aus dem Mausklickevent übergeben wird ist doch eigentlich unbrauchbar - wie funktioniert das denn dann?
https://wiki.selfhtml.org/wiki/JavaScript/Window/open
Bis demnächst
Matthias
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
Servus!
Ich habe das Beispiel und den Artikel entsprechend angepasst.
Vielen Dank! Schön wieder von Dir zu hören! Herzliche Grüße
Matthias Scharwies
Ich habe das Beispiel und den Artikel entsprechend angepasst.
Viele Grüße,
Orlok
Danke.
Meiner Erfahrung nach ( mit ff 47) läßt sich mit window.open("","","resizeable")
die Öffnung eines Extrafensters, statt eines Tabs, erzwingen . Eine Datei hinein
bekommt man dann eben über ...location = ... Wäre vielleicht hilfreich, im Artikel noch zu erwähnen.
Hallo,
Meiner Erfahrung nach ( mit ff 47) läßt sich mit window.open("","","resizeable") die Öffnung eines Extrafensters, statt eines Tabs, erzwingen.
ob window.open() einen neuen Tab oder ein komplett neues Browserfenster öffnet, ist abhängig von der Browserkonfiguration. Es ist möglich, dass damit bei deinen Browsereinstellungen ein neues Fenster geöffnet wird; bei mir wäre es in jedem Fall nur ein neuer Tab im aktuellen Fenster.
Ebenso ist konfigurationsabhängig, ob die Option "resizeable" überhaupt eine Wirkung hat oder nicht.
So long,
Martin