Birgit Egger: Neuen Tab mit Button öffnen

Hallo,

wenn ich in meiner Applikation einen Button klicke, dann wird mittels Ajax etwas zum Server/Backup gesendet. Je nach Auswertung am Server wird ein Ergebnis an den Client/Browser zurückgesendet.
Kann ich das machen mit JavaScript, dass ich dann (je nach return wert) einen neuen Tab mit einer bestimmten Url aufmache - geht das mit Javascript?

lg und Danke
Birgit

  1. Moin,

    wenn ich in meiner Applikation einen Button klicke, dann wird mittels Ajax etwas zum Server/Backup gesendet. Je nach Auswertung am Server wird ein Ergebnis an den Client/Browser zurückgesendet.

    bis hierher klar.

    Kann ich das machen mit JavaScript, dass ich dann (je nach return wert) einen neuen Tab mit einer bestimmten Url aufmache - geht das mit Javascript?

    Sicher, du kannst window.open() benutzen und so ein neues Fenster mit dem gewünschten Inhalt aufmachen. Ob das "nur" ein neues Tab oder ein eigenständiges neues Fenster wird, liegt aber nicht in deiner Macht. Das ist eine Frage der Browserkonfiguration. Bedenke auch, dass schlimmstenfalls der Popup-Blocker zuschlägt und deine vermutlich wichtige Information so unter die Räder kommt.

    Oder habe ich deine Frage missverstanden?

    Ciao,
     Martin

    --
    Chef zum Bewerber: Es gibt zwei Dinge, auf die ich allergrößten Wert lege. Das eine ist Sauberkeit! Haben Sie übrigens die Schuhe auf der Matte abgetreten? - Ja, selbstverständlich. - Gut. Das andere ist uneingeschränkte Ehrlichkeit. Übrigens, draußen liegt gar keine Fußmatte.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Moin!

      Bedenke auch, dass schlimmstenfalls der Popup-Blocker zuschlägt und deine vermutlich wichtige Information so unter die Räder kommt.

      Hab ich dauernd. Und weil das eigentlich alle wissen, gehe ich davon aus, dass dort nichts wichtiges aufgehen sollte und ich nichts verpasse.

      --
      Signaturen sind blöd!
    2. Sicher, du kannst window.open() benutzen und so ein neues Fenster mit dem gewünschten Inhalt aufmachen. Ob das "nur" ein neues Tab oder ein eigenständiges neues Fenster wird, liegt aber nicht in deiner Macht. Das ist eine Frage der Browserkonfiguration.

      Natürlich kann der Browser machen, was er will, und der User einstellen, was er will, aber Konvention und Standardeinstellung in Tab-fähigen Browsern ist, dass ein einfaches window.open() mit zwei Parametern einen Tab öffnet.

      Bedenke auch, dass schlimmstenfalls der Popup-Blocker zuschlägt und deine vermutlich wichtige Information so unter die Räder kommt.

      Das wird auf jeden Fall zutreffen, wenn window.open() im Callback des Ajax-Requests ausgeführt wird. Denn dann besteht keine Verbindung mehr zu einer Benutzereingabe. Hier kann man ein Fenster nur öffnen, wenn man das Ergebnis ausgibt und den Benutzer dazu bringt, einen weiteren Button zu klicken.

      Mathias

      1. Hallo,

        Sicher, du kannst window.open() benutzen und so ein neues Fenster mit dem gewünschten Inhalt aufmachen. Ob das "nur" ein neues Tab oder ein eigenständiges neues Fenster wird, liegt aber nicht in deiner Macht. Das ist eine Frage der Browserkonfiguration.
        Natürlich kann der Browser machen, was er will, und der User einstellen, was er will, aber Konvention und Standardeinstellung in Tab-fähigen Browsern ist, dass ein einfaches window.open() mit zwei Parametern einen Tab öffnet.

        interessant, mir war nicht bewusst, dass die Zahl der übergebenen Parameter eine Rolle spielt. Oder meintest du einfach nur, dass man das Verhalten mit dem dritten Parameter steuern kann/sollte?

        Bedenke auch, dass schlimmstenfalls der Popup-Blocker zuschlägt und deine vermutlich wichtige Information so unter die Räder kommt.
        Das wird auf jeden Fall zutreffen, wenn window.open() im Callback des Ajax-Requests ausgeführt wird. Denn dann besteht keine Verbindung mehr zu einer Benutzereingabe.

        Ein Popup-Blocker, der Popups in Verbindung mit einer Benutzeraktion zulässt, ist aber auch grenzwertig. Schließlich kommen die meisten unerwünschten Popups als Reaktion auf einen Klick (seltener auf Tastendruck).
        Der in Firefox integrierte Blocker beispielsweise wird meiner Ansicht nach erst brauchbar, wenn man die Ausnahmen wegnimmt, nach denen Popups innerhalb einer Sekunde nach Einfach- oder Doppelklicks erlaubt sind. Dann erst werden sie wirklich zuverlässig geblockt, und über die gelbe Info-Leiste, die dann eingeblendet wird, kann ich wählen, ob ich das Popup ignorieren oder eben doch haben möchte.

        Ciao,
         Martin

        --
        There is no place like 127.0.0.1
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. Hi,

          [...] Konvention und Standardeinstellung in Tab-fähigen Browsern ist, dass ein einfaches window.open() mit zwei Parametern einen Tab öffnet.

          interessant, mir war nicht bewusst, dass die Zahl der übergebenen Parameter eine Rolle spielt. Oder meintest du einfach nur, dass man das Verhalten mit dem dritten Parameter steuern kann/sollte?

          Wenn keine Maße angegeben werden, dann öffnen aktuelle Browser i.a.R. und mit Defaulteinstellungen ein neues Tab - keine Größe angegeben, also dem Autor egal, warum dann nicht gleich ein vollwertiges Tab. Werden Maße angegeben, so stimmen die meist nicht mit den Tab-Maßen überein, dann gibt es ein unabhängiges Popup - sofern der Nutzer das nicht explizit überschrieben hat.

          Ein Popup-Blocker, der Popups in Verbindung mit einer Benutzeraktion zulässt, ist aber auch grenzwertig.

          Ich fahre ganz gut damit. Popups kommen meist nur, wenn ich explizit einen Button klicke o.ä.
          In Verbindung mit Werbung ist das natürlich in der Tat grenzwertig, denn da wird ein eine Aktion auslösender Klick oft gleich zum Öffnen eines Popups genutzt, weil das zuzulassen eben die Defaulteinstellung aktueller Browser ist. Darum kümmert sich aber in der überwiegenden Zahl der Fälle mein Werbeblocker (urlfilter.ini im Opera), der schon von vornherein dafür sorgt, dass die entsprechenden Scripte gar nicht eingebunden werden.

          MfG ChrisB

          --
          RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        2. interessant, mir war nicht bewusst, dass die Zahl der übergebenen Parameter eine Rolle spielt. Oder meintest du einfach nur, dass man das Verhalten mit dem dritten Parameter steuern kann/sollte?

          Entweder man übergibt zwei Parameter oder übergibt als dritten Parameter einen Leerstring bzw. macht dort keine keinerlei Angaben zur Größe und Leistenkonfiguration.

          Ein Popup-Blocker, der Popups in Verbindung mit einer Benutzeraktion zulässt, ist aber auch grenzwertig.

          Gut, so funktionieren Popup-Blocker seit eh und je.

          Mathias

          1. Hallo,

            Ein Popup-Blocker, der Popups in Verbindung mit einer Benutzeraktion zulässt, ist aber auch grenzwertig.
            Gut, so funktionieren Popup-Blocker seit eh und je.

            manche, ja. Vielleicht auch die meisten.
            Ich hatte unter Windows lange Zeit einen, der als Content-Filter arbeitete und sämtliche window.open() im Quellcode durch new Object() ersetzt hat. Der war dann radikal, aber wirksam.

            Ciao,
             Martin

            --
            Die junge Ehefrau weint sich bei ihrer Mutter aus:
            Er hat gesagt, ich soll mich zum Teufel scheren! - Und da kommst du ausgerechnet zu mir?!
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
            1. Ich hatte unter Windows lange Zeit einen, der als Content-Filter arbeitete und sämtliche window.open() im Quellcode durch new Object() ersetzt hat. Der war dann radikal, aber wirksam.

              Das bezweifle ich. So eine Ersetzung macht das JavaScript eher komplett kaputt. Es gibt tausend Möglichkeiten, window.open aufzurufen, ohne »window.open()« zu schreiben, und es gibt tausend Fälle, in denen »window.open« nicht das bekannte window.open ausführt.

              open()
              this.open()
              this"open"
              document.defaultView.open()
              window.\u006F\u0070\u0065\u006E()
              window"\u006F\u0070\u0065\u006E"
              window'\x6F\x70\x65\x6E'

              (function () {
                var window = { open: function () {} };
                window.open('foo');
              })();

              usw.

              Mathias