Mario: popup funktioniert nur über funktionsaufruf, nicht direkt

Hallo Kollegen!

Ich hab folgendes Problem:
Ich möchte einen ganz normalen Popup-Link realisieren.

So funktioniert das:

...
function NeuFenster() {
 MeinFenster=window.open("test.htm", "TestFenster", "width=300,height=200,scrollbars");
}
..
<a href="javascript:NeuFenster()">Neues Fenster</a>
..

Eigentlich möchte ich das aber lieber folgendermaßen erreichen:

<a href="MeinFenster=window.open("test.htm", "TestFenster", "width=300,height=200,scrollbars");">Neues Fenster</a>

Das funzt aber nicht..

Also ich bräuchte irgendeine Möglichkeit, direkt im Tag des Links ein Popup zu motivieren..

Danke im Voraus,
Mario.

  1. Hi,

    1. Meines Wissens heißt es nicht nur scrollbars, sondern scrollbars=yes oder no (oder auto?)

    <a href="MeinFenster=window.open("test.htm", "TestFenster", "width=300,height=200,scrollbars");">Neues Fenster</a>

    Du musst die Parameter in ' statt " schreiben, also

    <a href="MeinFenster=window.open('test.htm', 'TestFenster', 'width=300,height=200,scrollbars');">Neues Fenster</a>

    sonst weiss a nicht, wann es mit href aufhören soll

    Gruß Dmitri

    1. Bamm, das ging aber schnell!!
      Ach ja, eh klar, sowas blödes.. Danke vielmals!

      1. Ui, zu früh gefreut..
        Das geht so doch nicht. Also mit den scrollbars hat das nix zu tun, wenn ich die weglasse, ändert das auch nichts. Und ' statt " führt leider noch immer nicht zum Erfolg..

        1. Mit

          <a href="javascript:Fenster=window.open('test.htm', 'TestFenster');">Neues Fenster</a>

          tut sich schon mehr. (Der Unterschied ist "javascript:") Dann öffnet sich nämlich immerhin das Popup. Aber dafür verschwindet der Inhalt der Ursprungsseite und es steht nur noch "[object]" da..
          Kann mir das jemand erklären??

          1. Aber dafür verschwindet der Inhalt der Ursprungsseite und es steht nur noch "[object]" da..
            Kann mir das jemand erklären??

            "[object]" ist der Rückgabewert, den dein Scriptaufruf erzeugt. Den musst du mit void() unterdrücken:

            <a href="javascript:void(Fenster=window.open('test.htm', 'TestFenster'))">Neues Fenster</a>

            void-Operator:
            http://selfhtml.teamone.de/javascript/sprache/operatoren.htm#void

            Gruß
            Norbert

          2. Mit

            <a href="javascript:Fenster=window.open('test.htm', 'TestFenster');">Neues Fenster</a>

            tut sich schon mehr. (Der Unterschied ist "javascript:") Dann öffnet sich nämlich immerhin das Popup. Aber dafür verschwindet der Inhalt der Ursprungsseite und es steht nur noch "[object]" da..
            Kann mir das jemand erklären??

            Vielleicht möchtest du eine Lösung, die auch mit Browsern funktioniert, welche Javascript abgeschaltet haben? Bittesehr:

            <a href="test.htm" target="_blank" onclick="window.open('test.htm','TestFenster');return false;">Neues Fenster</a>

            Wenn Javascript deaktiviert ist, wird onclick nicht ausgeführt (ist ja irgendwie klar), aber immerhin wird noch ein neues Browserfenster (mit allen Bedienelementen) erzeugt (durch target="_blank") und deine neue Seite geöffnet (durch die href-Angabe).

            Wenn Javascript aktiviert ist, wird bei einem Klick zuerst das im onclick-Attribut enthaltene Javascript ausgeführt. Das erzeugt dein neues Fenster, und durch return false wird verhindert, daß der Browser den eigentlichen Link auch noch ausführt. Du öffnest also nicht zwei Fenster, sondern nur eines.

            So schreibt man vernünftig Javascript. :)

            - Sven Rautenberg

            1. Ok, danke!

              Aber wieso geht eigentlich

              <a href="window.open('Test.htm','TestFenster')">Neues Fenster</a>

              nicht??

              1. Moin!

                Ok, danke!

                Aber wieso geht eigentlich

                <a href="window.open('Test.htm','TestFenster')">Neues Fenster</a>

                nicht??

                Das wurde schon erwähnt:

                window.open liefert ein Fensterobjekt zurück, welches man mit
                variable=window.open(...);
                auch speichern kann, um später auf dieses Fenster mit Javascript zuzugreifen. Das Ergebnis des Links wird im Browser angezeigt - und das Ergebnis ist eben ein Objekt.

                Man kann dagegen auf unterschiedliche Weise etwas dagegen tun, aber mit onclick ist es am elegantesten, weil am kompatibelsten mit allen existierenden Browsern und Konfigurationen.

                - Sven Rautenberg

            2. Hi,

              So schreibt man vernünftig Javascript. :)

              Gut abgeglotzt! ;-)

              Gruß Dmitri