it-swarm.com.de

Wie schließe ich die aktuelle Registerkarte in einem Browserfenster?

Ich möchte auf einer Webseite einen Link erstellen, der die derzeit aktive Registerkarte in einem Browser schließen würde, ohne andere Registerkarten in dem Browser zu schließen. 
Wenn der Benutzer auf die Verknüpfung Schließen klickt, sollte eine Warnmeldung angezeigt werden, in der der Benutzer mit zwei Schaltflächen "JA" und "NEIN" zur Bestätigung aufgefordert wird. Wenn der Benutzer auf "JA" klickt, schließen Sie diese Seite und wenn "NEIN", machen Sie nichts.

Wie geht das? Irgendwelche Vorschläge?

358
Naveed

Sie benötigen Javascript, um dies zu tun. Verwenden Sie window.close() :

close();

Hinweis: Die aktuelle Registerkarte ist impliziert. Das ist gleichbedeutend:

window.close();

oder Sie können ein anderes Fenster angeben.

So:

function close_window() {
  if (confirm("Close Window?")) {
    close();
  }
}

mit HTML:

<a href="javascript:close_window();">close</a>

oder:

<a href="#" onclick="close_window();return false;">close</a>

Sie return false hier, um das Standardverhalten für das Ereignis zu verhindern. Andernfalls versucht der Browser, diese URL aufzurufen (was offensichtlich nicht der Fall ist).

Jetzt sind die Optionen im Dialogfeld window.confirm() OK und Cancel (nicht Yes und No). Wenn Sie wirklich Ja und Nein wollen, müssen Sie eine Art modales Javascript-Dialogfeld erstellen.

Hinweis: Hier gibt es browserspezifische Unterschiede. Wenn Sie das Fenster mit Javascript (über window.open()) geöffnet haben, können Sie das Fenster mit Javascript schließen. Firefox verhindert, dass andere Fenster geschlossen werden. Ich glaube, dass IE den Benutzer zur Bestätigung auffordert. Andere Browser können variieren.

425
cletus

Versuche dies

<a href="javascript:window.open('','_self').close();">close</a>
226
Daniel Shen

Diese Methode funktioniert in Chrome und IE:

<a href="blablabla" onclick="setTimeout(function(){var ww = window.open(window.location, '_self'); ww.close(); }, 1000);">
    If you click on this the window will be closed after 1000ms
</a>
64
Palesz

Soweit ich das beurteilen kann, ist dies in Chrome oder FireFox nicht mehr möglich. Möglicherweise ist es noch in IE (zumindest vor dem Edge) möglich.

22
Guy Schalnat

Es ist möglich. Ich habe das ganze Netz danach durchsucht, aber als ich einmal an einer Umfrage von Microsoft teilnahm, bekam ich endlich die Antwort.

versuche dies:

window.top.close();

dadurch wird die aktuelle Registerkarte für Sie geschlossen.

16
user3239333

Erfolgreich getestet in FF 18 und Chrome 24:

Im Kopf einfügen:

<script>
    function closeWindow() {
        window.open('','_parent','');
        window.close();
    }
</script> 

HTML:

<a href="javascript:closeWindow();">Close Window</a>

Credits gehen an Marcos J. Drake .

6
Julesfrog

Folgendes funktioniert für mich in Chrome 41:

function leave() {
  var myWindow = window.open("", "_self");
  myWindow.document.write("");
  setTimeout (function() {myWindow.close();},1000);
}

Ich habe mehrere Ideen für FF ausprobiert, einschließlich des Öffnens einer tatsächlichen Webseite, aber nichts scheint zu funktionieren. Soweit ich es verstanden habe, schließt jeder Browser einen Tab oder ein Fenster mit xxx.close (), wenn er wirklich von JS geöffnet wurde, aber zumindest kann FF nicht dazu gebracht werden, einen Tab zu schließen, indem neuer Inhalt geöffnet wird diese tab.

Das macht Sinn, wenn Sie darüber nachdenken - ein Benutzer möchte möglicherweise nicht, dass JS eine Registerkarte oder ein Fenster schließt, das nützliche Informationen enthält.

6
Thailandian

Versuchen Sie das auch. Ich arbeite für mich an allen drei großen Browsern. 

<!-- saved from url=(0014)about:internet -->
<a href="#" onclick="javascript:window.close();opener.window.focus();" >Close Window</a>
6
Bhavin Shah

Personen, die diese Seite noch besuchen, dürfen eine Registerkarte, die von einem Skript OR geöffnet wird, nur schließen, indem Sie das Ankertag von HTML mit dem Ziel _blank verwenden. Beide können mit der Taste geschlossen werden

<script>
window.close();
</script>
1
killstreet
<button class="closeButton" style="cursor: pointer" onclick="window.close();">Close Window</button>

das hat die Arbeit für mich erledigt

0
pikax

etwas spät, aber das habe ich herausgefunden ...

window.close() funktioniert nur (IE ist eine Ausnahme), wenn das Fenster, zu dem Sie close() versuchen, von einem Skript mit der window.open () - Methode geöffnet wurde.

sie erhalten einen Konsolenfehler: Skripts schließen möglicherweise keine Fenster, die nicht mit einem Skript geöffnet wurden. als Fehler und sonst nichts.

sie könnten der URL einen eindeutigen Parameter hinzufügen, um zu erfahren, ob die Seite über ein Skript geöffnet wurde (z. B. time) - , aber es handelt sich lediglich um einen Hack und nicht um eine native Funktionalität. In einigen Fällen wird fail angezeigt.

ich konnte keinen Weg finden, um zu erfahren, ob die Seite aus einem open () geöffnet wurde oder nicht.... und Schließen wird nicht geworfen und es werden keine Fehler ausgegebendies wird NICHT "test" drucken:

try{
  window.close();
}
catch (e){
  console.log("text");
}

sie können in MDN mehr über die close () - Funktion lesen

0
calios

Dies ist eine Möglichkeit, dies zu lösen. Deklarieren Sie eine JavaScript-Funktion wie diese

<script>
  function Exit() {
     var x=confirm('Are You sure want to exit:');
     if(x) window.close();
   }
</script>

Fügen Sie dem HTML-Code die folgende Zeile hinzu, um die Funktion mit einem <button> aufzurufen.

<button name='closeIt' onClick="Exit()" >Click to exit </Button>
0

Ich komme vielleicht zu spät, aber das wird von den Browsern aus einem bestimmten Grund verhindert.

Stellen Sie sich vor, Sie versuchen immer wieder, ein Fenster zu schließen, und es wird nicht geschlossen, da es den " wenn nein " - Teil Ihrer Frage ausführt, nämlich "nichts tun".

Das wird auf jeden Fall irritierend sein!

0
Muhammad Osama