Jak zamknąć bieżącą kartę w oknie przeglądarki?

Chcę utworzyć link na stronie internetowej, który zamknie aktualnie aktywną kartę w przeglądarce bez zamykania innych kart w przeglądarce.
gdy użytkownik kliknie łącze Zamknij, powinien pojawić się komunikat z prośbą o potwierdzenie za pomocą dwóch przycisków " tak "i"nie". Jeśli użytkownik kliknie "tak", zamknij tę stronę, a jeśli" nie", nic nie rób.

Jak to zrobić? Jakieś sugestie?

Author: Fabian N., 2010-01-16

10 answers

Będziesz potrzebował Javascript, aby to zrobić. Użycie window.close():

close();

Uwaga: bieżąca karta jest domyślna. Jest to równoważne:

window.close();

Lub możesz określić inne okno.

Więc:

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

Z HTML:

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

Lub:

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

Ty return false tutaj, aby zapobiec domyślnemu zachowaniu dla zdarzenia. W przeciwnym razie przeglądarka spróbuje przejść do tego adresu URL(co oczywiście nie jest).

Teraz opcje na window.confirm() okno dialogowe będzie OK i Anuluj (nie tak i nie). Jeśli naprawdę chcesz tak i nie, musisz utworzyć jakieś modalne okno dialogowe Javascript.

Uwaga: {[15] } istnieją specyficzne dla przeglądarki różnice z powyższym. Jeśli otworzyłeś okno za pomocą Javascript (poprzez window.open()), możesz zamknąć okno za pomocą javascript. Firefox uniemożliwia zamykanie innych okien. Wierzę, że IE poprosi użytkownika o potwierdzenie. Inne przeglądarki mogą się różnić.

 380
Author: cletus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-23 06:54:49

Spróbuj tego

<a href="javascript:window.open('','_self').close();">close</a>
 215
Author: Daniel Shen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-13 00:44:59

Ta metoda działa w Chrome i 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>
 63
Author: Palesz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-15 14:12:04

Z tego co wiem, nie jest to już możliwe w Chrome czy FireFox. Może być jeszcze możliwe w IE (przynajmniej Pre-Edge).

 20
Author: Guy Schalnat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-10 02:39:34

To możliwe. Szukałem tego w całej sieci, ale raz, gdy wziąłem jedną z badań Microsoftu, w końcu dostałem odpowiedź.

Spróbuj tego:

window.top.close();

Spowoduje zamknięcie bieżącej karty dla Ciebie.

 16
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-20 20:24:37

Testowany pomyślnie w FF 18 i Chrome 24:

Insert in head:

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

HTML:

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

Napisy do Marcos J. Drake .

 6
Author: Julesfrog,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-11 15:15:31

Spróbuj też tego. Pracuje dla mnie na wszystkich trzech głównych przeglądarkach.

<!-- saved from url=(0014)about:internet -->
<a href="#" onclick="javascript:window.close();opener.window.focus();" >Close Window</a>
 6
Author: Bhavin Shah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-25 19:50:52

Dla mnie w Chrome 41 Działa:

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

Wypróbowałem kilka pomysłów na FF, W tym otwarcie rzeczywistej strony internetowej, ale nic nie działa. O ile dobrze rozumiem, każda przeglądarka zamknie kartę lub okno za pomocą xxx. close (), jeśli to było naprawdę otwarte przez JS, ale przynajmniej FF nie może zostać oszukany do zamknięcia karty przez otwarcie nowej zawartości wewnątrz tej karty.

To ma sens, gdy o tym pomyślisz-użytkownik może nie chcieć, aby JS zamykał kartę lub okno, które ma przydatna historia.

 6
Author: Thailandian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-01 09:39:48

Jest to jeden ze sposobów rozwiązania tego samego, zadeklaruj funkcję JavaScript taką jak Ta

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

Dodaj następujący wiersz do HTML, aby wywołać funkcję za pomocą <button>

<button name='closeIt' onClick="Exit()" >Click to exit </Button>
 0
Author: Mohsin Chaudhari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-17 10:37:13

Oto jak stworzyłbyś taki link:

<a href="javascript:if(confirm('Close window?'))window.close()">close</a>

 -2
Author: Eric Mickelsen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-23 10:56:19