mathefritz: "open": wie kann denn das Beispiel funktionieren

problematische Seite

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>
  1. problematische Seite

    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

    --
    Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
    1. problematische Seite

      Hallo Matthias

      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

      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

      1. problematische Seite

        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

        --
        Es gibt viel zu tun: ToDo-Liste
      2. problematische Seite

        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.

        1. problematische Seite

          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

          --
          Es gibt eine Theorie, die besagt, dass das Universum augenblicklich durch etwas noch Komplizierteres und Verrücktes ersetzt wird, sobald jemand herausfindet, wie es wirklich funktioniert. Es gibt eine weitere Theorie, derzufolge das bereits geschehen ist.
          - (frei übersetzt nach Douglas Adams)