Bagaimana cara menutup jendela browser tanpa menerima prompt "Apakah Anda ingin menutup jendela ini"?

86

Bagaimana saya bisa menutup jendela browser tanpa menerima prompt Apakah Anda ingin menutup jendela ini ?

Prompt muncul saat saya menggunakan window.close();fungsi.

Derek
sumber
22
termudah:window.open('','_self').close()
markasoftware
Di Firefox, ini semua bisa diperdebatkan jika Anda pengguna menonaktifkan penutupan jendela. kb.mozillazine.org/…
Brian
3
Anda tidak boleh
Robert Harvey
Tidak mungkin lagi. stackoverflow.com/a/19768082/391101
harvest316

Jawaban:

85
window.open('', '_self', ''); window.close();

Ini berhasil untuk saya.

Arabam
sumber
Berfungsi untuk IE11, Safary 5.1.7, tetapi tidak berfungsi di FF dan Chrome.
nikolai.serdiuk
Bekerja di Firefox 38.0.5, dan Chrome 43
pemrogram lain
bagaimana jika jendela dibuka menggunakan showModalDialog? Ini tidak bekerja pada IE10
bjan
Tidak yakin apakah ini berfungsi di semua browser, tetapi berfungsi di IE11 !!! Untuk browser apa kita harus membangun, saat ini. Terima kasih atas jawaban ini, Anda menyelamatkan saya dari banyak masalah.
KidBilly
Berfungsi dengan baik di IE 11, Chrome 76.0.3809, Firefox 69.0
Rahul Mahadik
57

Temanku ... ada cara tetapi "hack" tidak mulai menggambarkannya. Pada dasarnya Anda harus mengeksploitasi bug di IE 6 & 7.

Bekerja setiap saat!

Alih-alih menelepon window.close(), alihkan ke halaman lain.

Halaman Pembuka:

alert("No whammies!");
window.open("closer.htm", '_self');

Alihkan ke halaman lain. Hal ini membodohi IE untuk membiarkan Anda menutup browser di halaman ini.

Halaman Penutup:

<script type="text/javascript">
    window.close();
</script>

Luar biasa ya ?!

Nick
sumber
1
Saya tahu ini sudah 2 tahun. Tapi luar biasa..Bekerja di IE 8 dan firefox 15
Susie
9
Sepertinya Microsoft telah memperbaiki bug ini di IE10. Ada yang tahu bagaimana kita masih bisa mencapai ini di IE10?
Abhi Rampal
Baik self.close () dan window.close () tidak berfungsi untuk IE di sisi saya. Namun, Chrome, FF, dan Safari baik-baik saja
NoName
57

Skrip tidak diizinkan untuk menutup jendela yang dibuka pengguna. Ini dianggap sebagai risiko keamanan. Meskipun tidak dalam standar apa pun, semua vendor browser mengikuti ini ( dokumen Mozilla ). Jika ini terjadi di beberapa browser, itu adalah bug keamanan yang (idealnya) ditambal dengan sangat cepat.

Tak satu pun dari retasan dalam jawaban atas pertanyaan ini yang berfungsi lagi, dan jika seseorang muncul dengan peretasan kotor lainnya, pada akhirnya itu akan berhenti berfungsi juga.

Saya sarankan Anda tidak membuang-buang energi untuk melawan ini dan merangkul metode yang diberikan browser dengan sangat membantu kepada Anda - tanyakan kepada pengguna sebelum Anda tampaknya merusak halaman mereka.

rvighne
sumber
5
Atau, yang lebih sederhana: Jangan tutup jendela sama sekali. Jika Anda sudah selesai, arahkan pengguna kembali ke beranda Anda, atau ke beberapa jenis lokasi pusat lainnya.
senja -tidak aktif-
2
@duskwuff, Kami menjalankan pengujian otomatis terhadap peramban ini. Mereka harus ditutup .
ouflak
2
@ouflak Tentunya kerangka pengujian Anda memiliki beberapa cara untuk memanipulasi jendela.
senja -tidak aktif-
1
@duskwuff Bagaimana dengan perpustakaan pihak ketiga yang membiarkan jendela tetap terbuka? Anda pasti tidak dapat menyarankan agar saya meninggalkan kekacauan itu untuk pengguna atau mengarahkan mereka ke tampilan (duplikat) halaman beranda.
Keranjang Terbengkalai
1
Bisakah Anda menjelaskan juga dalam jawaban Anda sebagai catatan kaki, mengapa itu risiko keamanan.
T.Todua
31

Berikut adalah fungsi Javascript yang saya gunakan untuk menutup browser tanpa Prompt atau Warning, bisa juga dipanggil dari Flash. Ini harus dalam file html.

    function closeWindows() {
         var browserName = navigator.appName;
         var browserVer = parseInt(navigator.appVersion);
         //alert(browserName + " : "+browserVer);

         //document.getElementById("flashContent").innerHTML = "<br>&nbsp;<font face='Arial' color='blue' size='2'><b> You have been logged out of the Game. Please Close Your Browser Window.</b></font>";

         if(browserName == "Microsoft Internet Explorer"){
             var ie7 = (document.all && !window.opera && window.XMLHttpRequest) ? true : false;  
             if (ie7)
             {  
               //This method is required to close a window without any prompt for IE7 & greater versions.
               window.open('','_parent','');
               window.close();
             }
            else
             {
               //This method is required to close a window without any prompt for IE6
               this.focus();
               self.opener = this;
               self.close();
             }
        }else{  
            //For NON-IE Browsers except Firefox which doesnt support Auto Close
            try{
                this.focus();
                self.opener = this;
                self.close();
            }
            catch(e){

            }

            try{
                window.open('','_self','');
                window.close();
            }
            catch(e){

            }
        }
    }
Kuldip D Gandhi
sumber
Pada IE 10.0.9200, membuka jendela menggunakan showModalDialog. Aktif closeWindows, Ini membuka jendela baru (halaman yang sama) sementara yang sebelumnya masih terbuka.
bjan
Tidak berfungsi di Firefox, IE / Edge menampilkan prompt konfirmasi - itu berfungsi di Chrome sekalipun.
Dymas
12

Ini berfungsi di Chrome 26, Internet Explorer 9 dan Safari 5.1.7 ( tanpa menggunakan halaman pembantu, ala jawaban Nick):

<script type="text/javascript">
    window.open('javascript:window.open("", "_self", "");window.close();', '_self');
</script>

Bersarang window.openadalah untuk membuat IE tidak menampilkan prompt Apakah Anda ingin menutup jendela ini .

Sayangnya, Firefox tidak dapat menutup jendela.

Danny Beckett
sumber
Bekerja untuk IE 10 juga.
Mukus
11

Di tag tubuh:

<body onload="window.open('', '_self', '');">

Untuk menutup jendela:

<a href="javascript:window.close();">

Diuji pada Safari 4.0.5, FF untuk Mac 3.6, IE 8.0, dan FF untuk Windows 3.5

JimB
sumber
Itu secara fungsional sama dengan yang dilakukan Nick.
naugtur
Iya. Jika saya membaca posting Nick dengan benar, dia menyarankan pengalihan sebelum memanggil window.close. Apa yang saya posting adalah jika Anda tidak ingin menggunakan pengalihan. Jika saya salah membaca posting Nick minta maaf.
JimB
7

Untuk alasan keamanan, jendela hanya dapat ditutup di JavaScript jika dibuka oleh JavaScript. Untuk menutup jendela, Anda harus membuka jendela baru dengan _selfsebagai target, yang akan menimpa jendela Anda saat ini, dan kemudian menutup jendela tersebut (yang dapat Anda lakukan karena dibuka melalui JavaScript).

window.open('', '_self', '');
window.close();
jbabey.dll
sumber
ini berhasil untuk saya dengan Silverlight: HtmlPage.Window.Eval ("window.open ('', '_self', ''); window.close ();");
Mike Fuchs
6

Dari sini :

<a href="javascript:window.opener='x';window.close();">Close</a>

Anda perlu mengatur window.openersesuatu, jika tidak maka akan mengeluh.

Harley Holcombe
sumber
Bekerja untuk saya, hampir 7 tahun kemudian di Chrome, FF dan IE 10.
Mike Devenney
6

window.open('', '_self', '').close();

Maaf agak terlambat di sini, tetapi saya menemukan solusinya, setidaknya untuk kasus saya. Diuji di Safari 11.0.3 dan Google Chrome 64.0.3282.167

Mada Aryakusumah
sumber
5

Karena peningkatan keamanan di IE, Anda tidak dapat menutup jendela kecuali jika dibuka oleh skrip. Jadi cara menyiasatinya adalah membiarkan browser mengira bahwa halaman ini dibuka menggunakan skrip, dan kemudian menutup jendela. Berikut implementasinya.

Coba ini, ini berfungsi seperti pesona!
javascript tutup jendela saat ini tanpa perintah IE

<script type="text/javascript">
function closeWP() {
 var Browser = navigator.appName;
 var indexB = Browser.indexOf('Explorer');

 if (indexB > 0) {
    var indexV = navigator.userAgent.indexOf('MSIE') + 5;
    var Version = navigator.userAgent.substring(indexV, indexV + 1);

    if (Version >= 7) {
        window.open('', '_self', '');
        window.close();
    }
    else if (Version == 6) {
        window.opener = null;
        window.close();
    }
    else {
        window.opener = '';
        window.close();
    }

 }
else {
    window.close();
 }
}
</script>

javascript menutup jendela saat ini tanpa perintah IE

Vivek
sumber
2

Buat fungsi JavaScript

<script type="text/javascript">
    function closeme() {
        window.open('', '_self', '');
        window.close();
    }
</script>

Sekarang tulis kode ini dan panggil fungsi JavaScript di atas

<a href="Help.aspx" target="_blank" onclick="closeme();">Help</a>

Atau sederhananya:

<a href="" onclick="closeme();">close</a>
Niloofar
sumber
2

Ini akan berhasil:

<script type="text/javascript">
function closeWindowNoPrompt()
{
window.open('', '_parent', '');
window.close();
}
</script>

sumber
Bekerja menggunakan implementasi Chrome Python Eel.
revliscano
1
window.opener=window;
window.close();
Danny Beckett
sumber
0

Browser mengeluh karena Anda menggunakan JavaScript untuk menutup jendela yang tidak dibuka dengan JavaScript, mis window.open('foo.html');.

Billy Jo
sumber
0

Solusi terbaik yang saya temukan adalah:

this.focus();
self.opener=this;
self.close();
Derek
sumber
0

Tempatkan kode berikut di ASPX.

<script language=javascript>
function CloseWindow() 
{
    window.open('', '_self', '');
    window.close();
}
</script>

Tempatkan kode berikut dalam kode di belakang acara klik tombol.

string myclosescript = "<script language='javascript' type='text/javascript'>CloseWindow();</script>";

Page.ClientScript.RegisterStartupScript(GetType(), "myclosescript", myclosescript);

Jika Anda tidak memiliki pemrosesan apa pun sebelum menutup, maka Anda dapat langsung memasukkan kode berikut di ASPX itu sendiri di tag klik tombol.

OnClientClick="CloseWindow();"

Semoga ini membantu.

Kamleshkumar Gujarathi
sumber
Pertanyaan menanyakan solusi javascript sederhana, hindari ASPX.
Zeeshan
@Zeeshan: Setiap pengembang yang sepadan dapat melihat bahwa JavaScript di bagian atas kiriman Kamleshkumar Gujarathi dapat diterapkan pada kebutuhan mereka sendiri. Sentuhan yang kasar jika Anda tidak menyukai jawabannya.
Paul
0

Dalam situasi saya, kode berikut disematkan ke dalam file php.

var PreventExitPop = true;
function ExitPop() {
  if (PreventExitPop != false) {
    return "Hold your horses! \n\nTake the time to reserve your place.Registrations might become paid or closed completely to newcomers!"
  }
}
window.onbeforeunload = ExitPop;

Jadi saya membuka konsol dan menulis yang berikut ini

PreventExitPop = false

Ini memecahkan masalah. Jadi, cari tahu kode JavaScript dan temukan variabelnya dan tetapkan ke "nilai" yang sesuai yang dalam kasus saya adalah "salah"

nurmurat
sumber
-3

Saya akan memposting ini karena inilah yang saat ini saya gunakan untuk situs saya dan berfungsi di Google Chrome dan IE 10 tanpa menerima pesan popup:

<html>
    <head>
    </head>
    <body onload="window.close();">
    </body>
</html>

Saya memiliki fungsi di situs saya yang ingin saya jalankan untuk menyimpan variabel on / off ke sesi tanpa langsung membuka halaman baru jadi saya hanya membuka halaman web popup kecil. Halaman web itu kemudian segera menutup sendiri dengan onload="window.close();"fungsinya.

Logan Hasbrouck
sumber
Ya: tapi seperti stackoverflow.com/a/24854246/2239406 informasi: Anda buka windo di javascript, lalu bisa tutup dengan javascript.
Denis Chenu
baik, jika tidak seharusnya berfungsi, dan jika ini telah 'ditambal', ini masih berfungsi di semua browser di pc saya tanpa gagal. Saya hanya memberikan solusi yang saat ini berhasil untuk saya.
Logan Hasbrouck
Perbedaannya adalah: Anda membuka jendela di JS. Jika jendela tidak terbuka di JS: tidak berfungsi.
Denis Chenu
Tidak, saya tidak menggunakan JS untuk membuka jendela; bukan saya menggunakan adengan target=_blankuntuk membuka jendela popup kecil di url tertentu, lalu akhirnya saya menggunakan JS untuk menutup jendela. Tujuannya adalah agar url tertentu menyimpan nilai ke sesi untuk menonaktifkan gambar latar belakang, meskipun di sini saya akan segera menghapusnya demi ajax setelah saya mengetahui cara melakukan ajax. (masih belajar tali persay)
Logan Hasbrouck