it-swarm.com.de

JavaScript in einem neuen Fenster öffnen, nicht in einem Tab

Ich habe eine Auswahlbox, die window.open(url) aufruft, wenn ein Element ausgewählt wird. Firefox öffnet die Seite standardmäßig auf einer neuen Registerkarte. Ich möchte jedoch, dass die Seite in einem neuen Fenster und nicht in einem neuen Tab geöffnet wird. 

Wie kann ich das erreichen?

345
adam

Geben Sie dem Fenster einen 'specs'-Parameter mit Breite/Höhe. Siehe hier für alle möglichen Optionen.

window.open(url, windowName, "height=200,width=200");

Wenn Sie eine Breite/Höhe angeben, wird sie in einem neuen Fenster anstelle einer Registerkarte geöffnet.

431
DNS

Sie müssen keine Höhe verwenden, stellen Sie sicher, dass Sie _blank verwenden.

Für ein leeres Fenster:

window.open('', '_blank', 'toolbar=0,location=0,menubar=0');

Für eine bestimmte URL:

window.open('http://www.google.com', '_blank', 'toolbar=0,location=0,menubar=0');
100
nwbrad

Ich bin möglicherweise falsch, aber nach meinem Verständnis wird dies durch die Browsereinstellungen des Benutzers gesteuert, und ich glaube nicht, dass dies überschrieben werden kann.

80
Jordan S. Jones

Versuchen:

window.open("", [window name], "height=XXX,width=XXX,modal=yes,alwaysRaised=yes");

Ich habe etwas Code, der das tut, was Sie sagen, aber es enthält viele Parameter. Ich denke, das ist das Nötigste. Lassen Sie mich wissen, wenn es nicht funktioniert. Ich werde den Rest posten.

15
theman_on_vista

Sie könnten folgende Funktion ausprobieren:

<script type="text/javascript">
function open(url)
{
  var popup = window.open(url, "_blank", "width=200, height=200") ;
  popup.location = URL;
}
</script>

Der HTML-Code zur Ausführung:

<a href="#" onclick="open('http://www.google.com')">google search</a>
10
jgray

Du solltest nicht müssen. Erlauben Sie dem Benutzer die gewünschten Einstellungen.

Firefox tut dies standardmäßig, weil das Öffnen einer Seite in einem neuen Fenster ärgerlich ist und eine Seite niemals dazu berechtigt sein darf, wenn dies nicht vom Benutzer gewünscht wird. (In Firefox können Sie Registerkarten in einem neuen Fenster öffnen, wenn Sie dies so einstellen).

8
CookieOfFortune

OK, nachdem ich viele Tests gemacht habe, hier meine Schlussfolgerung:

Wenn Sie durchführen:

     window.open('www.yourdomain.tld','_blank');
     window.open('www.yourdomain.tld','myWindow');

oder was auch immer Sie in das Zielfeld eingeben, dies ändert nichts: Die neue Seite wird auf einer neuen Registerkarte geöffnet (abhängig von den Benutzervorgaben).

Wenn Sie möchten, dass die Seite in einem neuen "echten" Fenster geöffnet wird, müssen Sie zusätzliche Parameter eingeben. Mögen:

window.open('www.yourdomain.tld', 'mywindow','location=1,status=1,scrollbars=1, resizable=1, directories=1, toolbar=1, titlebar=1');

Nach dem Test scheint der zusätzliche Parameter, den Sie verwenden, keine Rolle zu spielen: Dies ist nicht die Tatsache, dass Sie "diesen Parameter" oder "diesen anderen" setzen, um das neue "echte Fenster" zu erstellen, sondern die Tatsache, dass es neue Parameter gibt (s ).

Aber etwas ist verwirrt und kann viele falsche Antworten erklären:

Diese:

 win1 = window.open('myurl1', 'ID_WIN');
 win2 = window.open('myurl2', 'ID_WIN', 'location=1,status=1,scrollbars=1');

Und das:

 win2 = window.open('myurl2', 'ID_WIN', 'location=1,status=1,scrollbars=1');
 win1 = window.open('myurl1', 'ID_WIN');

wird NICHT das gleiche Ergebnis geben. 

Beim ersten Öffnen einer Seite ohne extra-Parameter wird diese in einem neuen tab geöffnet. In diesem Fall wird der zweite Anruf aufgrund dieses Namens auch in diesem Tab geöffnet.

Im zweiten Fall wird die Seite in einem neuen " real window " geöffnet, wenn der erste Aufruf mit extra-Parameter erfolgt. In diesem Fall wird der zweite Aufruf auch in diesem neuen " real window " geöffnet, auch wenn der zweite Aufruf ohne den zusätzlichen Parameter erfolgt.

Dies bedeutet, dass der erste Anruf wichtig ist, da er entschieden hat, wo die Seite platziert werden soll. 

7
Peter

Interessanterweise habe ich festgestellt, dass, wenn Sie eine empty - Zeichenfolge (im Gegensatz zu einer Nullzeichenfolge oder einer Liste von Eigenschaften) für das dritte Attribut von window.open übergeben, diese in einer neuen Registerkarte für Chrome (Firefox) geöffnet wird und IE. Wenn nicht, war das Verhalten anders.

Das ist also mein neuer Anruf:

 window.open(url, windowName, '');
5
Tom Lianza

Der Schlüssel sind die Parameter:

Wenn Sie bereitstellen Parameter [Height = "", Width = ""]], wird es in neuen Fenstern geöffnet.

Wenn Sie NICHT angeben-Parameter öffnen, wird es in einem neuen Tab geöffnet.

Getestet in Chrome und Firefox

5
MuniR

probiere diese Methode .....

function popitup(url) {
       //alert(url);
       newwindow=window.open("http://www.zeeshanakhter.com","_blank","toolbar=yes,scrollbars=yes, resizable=yes, top=500, left=500, width=400, height=400");
       newwindow.moveTo(350,150);
   if (window.focus) 
          {
             newwindow.focus()
          }
   return false;
  }
3
Zeeshan Akhter

Ich denke, es ist kein html-Zieleigenschaftenproblem, aber Sie haben das Kontrollkästchen "Neue Windows-Fenster in einer neuen Registerkarte öffnen" nicht aktiviert. Überprüfen Sie es und versuchen Sie es erneut. 

enter image description here

1
shihab mm

Ich habe es gerade mit IE (11) und Chrome (54.0.2794.1 Canary SyzyASan) versucht:

window.open(url, "_blank", "x=y")

... und es öffnete sich in einem neuen Fenster. 

Was bedeutet, dass Clint pachl es richtig gemacht hat, als er sagte, dass die Angabe eines Parameters das neue Fenster öffnet.

- und anscheinend muss es kein legitimer Parameter sein!

(YMMV - wie gesagt, ich habe es nur an zwei Stellen getestet ... und das nächste Upgrade könnte die Ergebnisse auf irgendeine Weise ungültig machen.)

ETA: Ich habe es jedoch gerade gemerkt - in IE hat das Fenster keine Verzierungen.

1
theGleep

Für mich war die Lösung zu haben

"location=0"

im 3. Parameter. Getestet am neuesten FF/Chrome und einer alten Version von IE11

Vollständiger Methodenaufruf, den ich verwende, ist unten (Da ich gerne eine variable Breite verwende):

window.open(url, "window" + id, 'toolbar=0,location=0,scrollbars=1,statusbar=1,menubar=0,resizable=1,width=' + width + ',height=800,left=100,top=50');
0
DAustin

Ich hatte dieselbe Frage, fand aber eine relativ einfache Lösung. 

In JavaScript habe ich nach window.opener !=null; gesucht, um festzustellen, ob das Fenster ein Popup war. Wenn Sie einen ähnlichen Erkennungscode verwenden, um festzustellen, ob das Fenster, in dem Ihre Site gerendert wird, ein Popup ist, können Sie leicht "ausschalten" wählen, wenn Sie ein " new " window mit dem neuen Windows-JavaScript. 

Setzen Sie dies ganz oben auf Ihre Seite, und Sie möchten immer ein "neues" Fenster sein.

<script type="text/javascript">
    window.opener=null;
</script>

Ich verwende dies auf der Anmeldeseite meiner Website, sodass Benutzer kein Popup-Verhalten erhalten, wenn sie ein Popup-Fenster verwenden, um zu meiner Website zu navigieren. 

Sie können sogar eine einfache Weiterleitungsseite erstellen, die dies ausführt und dann zu der von Ihnen angegebenen URL wechselt. So etwas wie,

JavaScript auf der übergeordneten Seite:

window.open("MyRedirect.html?URL="+URL, "_blank");

Und dann mit einem kleinen Javascript von hier können Sie die URL erhalten und darauf umleiten.

JavaScript auf Weiterleitungsseite:

 <script type="text/javascript">
        window.opener=null;

    function getSearchParameters() {
          var prmstr = window.location.search.substr(1);
          return prmstr != null && prmstr != "" ? transformToAssocArray(prmstr) : {};
    }

    function transformToAssocArray( prmstr ) {
        var params = {};
        var prmarr = prmstr.split("&");
        for ( var i = 0; i < prmarr.length; i++) {
            var tmparr = prmarr[i].split("=");
            params[tmparr[0]] = tmparr[1];
        }
        return params;
    }

    var params = getSearchParameters();
    window.location = params.URL;
    </script>
0
Dan

Beantwortet hier . Aber poste es erneut als Referenz. 

window.open() wird nicht auf einer neuen Registerkarte geöffnet, wenn dies beim tatsächlichen Klickereignis nicht geschieht. Im angegebenen Beispiel wird die URL beim tatsächlichen Klickereignis geöffnet. Dies funktioniert, sofern der Benutzer entsprechende Einstellungen im Browser hat.

<a class="link">Link</a>
<script  type="text/javascript">
     $("a.link").on("click",function(){
         window.open('www.yourdomain.com','_blank');
     });
</script>

Wenn Sie versuchen, einen Ajax-Aufruf innerhalb der Click-Funktion auszuführen und ein Fenster mit Erfolg öffnen möchten, müssen Sie sicherstellen, dass Sie den Ajax-Aufruf mit der Optionsgruppe async : false ausführen.

0
Venkat Kotra