Deteksi browser atau penutupan tab

306

Apakah ada kode JavaScript / jQuery lintas browser untuk mendeteksi jika browser atau tab browser sedang ditutup, tetapi bukan karena tautan diklik?

kawan
sumber
1
Lihat jawaban saya untuk pertanyaan ini: stackoverflow.com/questions/3735198/…
Nivas
Gunakan sessionStorage Properti, itu akan kedaluwarsa begitu browser ditutup. w3schools.com/jsref/prop_win_sessionstorage.asp
csandreas1
Lihat jawaban ini! Saya menemukan ini sangat berguna dan mencakup sebagian besar kasus. stackoverflow.com/a/26275621/7192927
SukanyaPai

Jawaban:

273

Jika saya mendapatkan Anda dengan benar, Anda ingin tahu kapan tab / jendela ditutup secara efektif. Nah, AFAIK satu-satunya cara Javascriptuntuk mendeteksi barang semacam itu adalah onunload&onbeforeunload acara .

Sayangnya (atau untungnya?), Peristiwa-peristiwa itu juga dipecat ketika Anda meninggalkan situs di atas linkatau tombol kembali browser Anda. Jadi ini adalah jawaban terbaik yang bisa saya berikan, saya pikir Anda tidak bisa mendeteksi asli closedalam Javascript. Koreksi saya jika saya salah di sini.

jandy
sumber
39
Benar. Anda hanya dapat mendeteksi saat halaman dibuka, bukan saat jendela ditutup. Selain itu, onbeforeunload non-standar, jadi tidak didukung oleh semua browser.
Guffa
7
Saya ingin menggunakan fitur 'on close' juga, tetapi memperhatikan bahwa pengguna saya sesekali akan menyegarkan layar dengan menekan F5. Karena penangan 'on close' saya dipanggil pada refresh seperti ini, ini berarti saya tidak dapat menggunakannya dengan cara yang saya butuhkan (yang sebenarnya adalah 'close tab atau window') ... sial, kita perlu model acara baru untuk semua ini!
Jeach
1
Tidak lagi berfungsi di chrome / opera ... chromestatus.com/feature/5349061406228480
Samir Seetal
2
Tentu saja ini masih berfungsi, mereka hanya menghapus Stringnilai pengembalian kustom dari onbeforeunload. Jadi sekarang Anda tidak lagi dapat menampilkan pesan khusus sebelum membongkar.
jAndy
@jAndy @Guffa Bagaimana saya bisa mengetahui jendela mana yang dipecat unload?
Egor Dudyak
125

Dari Dokumentasi Firefox

Untuk beberapa alasan, browser berbasis Webkit tidak mengikuti spesifikasi untuk kotak dialog. Sebuah contoh yang hampir lintas-kerja akan dekat dari contoh di bawah ini.

window.addEventListener("beforeunload", function (e) {
  var confirmationMessage = "\o/";

  (e || window.event).returnValue = confirmationMessage; //Gecko + IE
  return confirmationMessage;                            //Webkit, Safari, Chrome
});

Contoh ini untuk menangani semua browser.

mohamed-ibrahim
sumber
2
Ini adalah satu-satunya solusi yang berfungsi untuk browser chrome saya. Saya tidak mencoba yang lain.
Chase Roberts
4
ya, saya mencoba banyak solusi dan saya datang dengan ini pada akhirnya, kombinasi untuk jawaban terbaik, dan saya mengujinya di semua browser.
mohamed-ibrahim
1
Metode ini tidak berfungsi dengan sempurna pada tab tutup saat menggunakan firefox (> = ver. 44) dengan hanya tab yang dibuka.
Rajkishore
Mulai hari ini, menggunakan semua versi browser terbaru, prompt berfungsi saat menutup tab, menavigasi atau menutup browser untuk Chrome, Firefox, Opera, IE11 dan Edge dan juga berfungsi ketika Anda memiliki banyak tab yang dibuka kecuali untuk Chrome di mana Chrome menutup semua tab. tanpa disuruh, setidaknya di mesin saya.
Thierry
tidak memberikan jalan keluar sebagaimana didefinisikan dalam pertanyaan. Ini juga dipicu pada acara cuti halaman tidak hanya browser tutup atau tab tutup
Sunil Acharya
48

Solusi Sederhana

window.onbeforeunload = function () {
    return "Do you really want to close?";
};

sumber
7
Sihir macam apakah ini? (y) apakah itu berfungsi di semua browser? bekerja sangat baik pada chrome
Ziv Weissman
5
itu menyala ketika Anda me-refresh halaman. itu satu-satunya masalah saya.
Leo Leoncio
6
Solusi ini tidak lagi di Firefox dan Chrome
Mehdi Dehghani
Ini juga dipicu pada acara cuti halaman tidak hanya browser tutup atau tab tutup
Sunil Acharya
20
<body onbeforeunload="ConfirmClose()" onunload="HandleOnClose()">

var myclose = false;

function ConfirmClose()
{
    if (event.clientY < 0)
    {
        event.returnValue = 'You have closed the browser. Do you want to logout from your application?';
        setTimeout('myclose=false',10);
        myclose=true;
    }
}

function HandleOnClose()
{
    if (myclose==true) 
    {
        //the url of your logout page which invalidate session on logout 
        location.replace('/contextpath/j_spring_security_logout') ;
    }   
}

// Ini berfungsi di IE7, jika Anda menutup tab atau browser dengan hanya satu tab

jyothis
sumber
2
ya tetapi untuk beberapa browser tab seperti ie8, firefox. ada masalah menggunakan ini?
cometta
Ternyata menggunakan kode ini di IE9 akan menyebabkan pesan ini muncul ketika pengguna mengklik tombol kembali, maju, atau menyegarkan dengan mouse mereka.
Steve Wortham
Hanya kepala bahwa kami menerapkan solusi serupa kembali pada 2007. Solusi ini tidak lagi berfungsi di IE9 sekitar seminggu yang lalu. Itu berhenti bekerja (atau mungkin tidak pernah berhasil) di browser tab sejak lama.
tjfo
Saya menyuntikkan window.onunload = "alert('wait')"dan window.onbeforeunload = "alert('wait... chrome!')"menggunakan konsol di Chromium / Ubuntu tetapi tidak dipecat ketika saya menutup tab.
es
window.onunload = "alert('wait')"dan seperti itu seharusnya tidak bekerja dengan baik. + Msgstr "Fungsi harus menetapkan nilai string ke properti returnValue dari objek Event dan mengembalikan string yang sama". Silakan lihat artikel MDN
Dmitry Vyprichenko
8

Saya harus secara otomatis mengeluarkan pengguna ketika browser atau tab ditutup, tetapi tidak ketika pengguna menavigasi ke tautan lain. Saya juga tidak ingin konfirmasi muncul saat itu terjadi. Setelah berjuang dengan ini untuk sementara waktu, terutama dengan IE dan Edge, inilah yang akhirnya saya lakukan (diperiksa bekerja dengan IE 11, Edge, Chrome, dan Firefox) setelah mendasarkan pendekatan dengan jawaban ini .

Pertama, mulai penghitung waktu mundur di server di beforeunloadpengendali acara di JS. Panggilan ajax harus sinkron agar IE dan Edge dapat berfungsi dengan baik. Anda juga perlu menggunakan return;agar dialog konfirmasi tidak muncul seperti ini:

    window.addEventListener("beforeunload", function (e) {        
      $.ajax({
          type: "POST",
          url: startTimerUrl,
          async: false           
      });
      return;
    });

Memulai timer akan membuat cancelLogoutflag menjadi false . Jika pengguna me-refresh halaman atau menavigasi ke tautan internal lain, cancelLogoutbendera di server disetel ke true . Setelah penghitung waktu berlalu, ia akan memeriksa cancelLogoutbendera untuk melihat apakah acara logout telah dibatalkan. Jika timer telah dibatalkan, maka timer akan berhenti. Jika browser atau tab ditutup, maka cancelLogoutbendera akan tetap salah dan pengendali acara akan mengeluarkan pengguna.

Catatan implementasi: Saya menggunakan ASP.NET MVC 5 dan saya membatalkan logout dalam Controller.OnActionExecuted()metode yang diganti .

Ionian316
sumber
Ini bekerja dengan baik. Apakah ada alasan Anda membuat "async: false"? Ini menghasilkan peringatan bahwa panggilan AJAX yang sinkron tidak digunakan lagi. Terima kasih!
cat_in_hat
1
@FoundWaldoException, seperti yang tercantum dalam jawaban, saya menemukan bahwa async perlu disetel ke false agar ini bekerja di IE dan Edge.
Ionian316
Bagaimana cara membatalkan logout OnActionExecuted?
Kiquenet
@Kiquenet Hentikan saja timer yang dimulai pada kode Anda.
Ionian316
6

Maaf, saya tidak dapat menambahkan komentar ke salah satu jawaban yang ada, tetapi jika Anda ingin menerapkan semacam dialog peringatan, saya hanya ingin menyebutkan bahwa fungsi event handler memiliki argumen - peristiwa. Dalam kasus Anda, Anda dapat memanggil event.preventDefault () untuk melarang meninggalkan halaman secara otomatis, kemudian mengeluarkan dialog Anda sendiri. Saya menganggap ini opsi yang jauh lebih baik daripada menggunakan peringatan jelek dan tidak aman standar (). Saya pribadi mengimplementasikan set kotak dialog saya sendiri berdasarkan objek kendoWindow (Kendo UI dari Telerik, yang hampir sepenuhnya bersumber terbuka, kecuali kendoGrid dan kendoEditor). Anda juga dapat menggunakan kotak dialog dari jQuery UI. Harap dicatat, bahwa hal-hal seperti itu tidak sinkron, dan Anda harus mengikat pawang untuk mengklik acara setiap tombol, tetapi ini semua sangat mudah untuk diterapkan.

Namun, saya setuju bahwa kurangnya acara tutup yang sebenarnya mengerikan: jika Anda, misalnya, ingin mengatur ulang keadaan sesi Anda di back-end hanya pada kasus penutupan sebenarnya, itu masalah.

Alex Iurovetski
sumber
6

Untuk tugas serupa, Anda dapat menggunakan sessionStorageuntuk menyimpan data secara lokal hingga tab browser ditutup.

The sessionStoragetoko objek data hanya satu sesi (data akan dihapus ketika tab browser ditutup). ( W3Schools )

Ini pulpen saya .

<div id="Notice">
    <span title="remove this until browser tab is closed"><u>dismiss</u>.</span>
</div>
<script>
    $("#Notice").click(function() {
     //set sessionStorage on click
        sessionStorage.setItem("dismissNotice", "Hello");
        $("#Notice").remove();
    });
    if (sessionStorage.getItem("dismissNotice"))
    //When sessionStorage is set Do stuff...
        $("#Notice").remove();
</script>
csandreas1
sumber
5

Tidak ada acara, tetapi ada properti window.closedyang didukung di semua browser utama pada saat penulisan ini. Jadi jika Anda benar-benar perlu tahu, Anda bisa polling jendela untuk memeriksa properti itu.

if(myWindow.closed){do things}

Catatan: Polling apa pun umumnya bukan solusi terbaik. The window.onbeforeunloadevent harus digunakan jika mungkin, satu-satunya peringatan adalah bahwa hal itu juga kebakaran jika Anda beranjak.

dlsso
sumber
4
$(window).unload( function () { alert("Bye now!"); } );
Poonam Bhatt
sumber
9
Ini tidak akan berfungsi pada Firefox atau Chrome. Coba beforeunloadjika ingin menampilkan lansiran. Seperti ini:$(window).on('beforeunload', function(){ alert ('Bye now')});
AdrianoRR
5
sesuai jQuery docs "Sebagian besar browser akan mengabaikan panggilan untuk mengingatkan (), mengkonfirmasi () dan meminta ()" api.jquery.com/unload
katzmopolitan
4

Cobalah untuk menggunakannya:

window.onbeforeunload = function (event) {
    var message = 'Important: Please click on \'Save\' button to leave this page.';
    if (typeof event == 'undefined') {
        event = window.event;
    }
    if (event) {
        event.returnValue = message;
    }
    return message;
};

$(function () {
    $("a").not('#lnkLogOut').click(function () {
        window.onbeforeunload = null;
    });
    $(".btn").click(function () {
        window.onbeforeunload = null;
});
});
Fezal halai
sumber
3

Saya menemukan cara, yang berfungsi pada semua browser saya .

Diuji pada versi berikut: Firefox 57, Internet Explorer 11, Edge 41, salah satu Chrome terbaru (tidak akan menampilkan versi saya)

Catatan : onbeforeunload fires jika Anda meninggalkan halaman dengan cara apa pun yang mungkin (refresh, tutup browser, redirect, tautan, kirim ..). Jika Anda hanya ingin itu terjadi pada penutupan peramban, cukup ikat penangan acara.

  $(document).ready(function(){         

        var validNavigation = false;

        // Attach the event keypress to exclude the F5 refresh (includes normal refresh)
        $(document).bind('keypress', function(e) {
            if (e.keyCode == 116){
                validNavigation = true;
            }
        });

        // Attach the event click for all links in the page
        $("a").bind("click", function() {
            validNavigation = true;
        });

        // Attach the event submit for all forms in the page
        $("form").bind("submit", function() {
          validNavigation = true;
        });

        // Attach the event click for all inputs in the page
        $("input[type=submit]").bind("click", function() {
          validNavigation = true;
        }); 

        window.onbeforeunload = function() {                
            if (!validNavigation) {     
                // ------->  code comes here
            }
        };

  });
Syno
sumber
Bagaimana pengendali terpisah untuk peramban tutup akan ditambahkan .. Saya rasa kami tidak memiliki acara terpisah untuk ini.
blazehub
Ini sangat membantu. Saya perlu menyesuaikan jangkar A hanya untuk api untuk hyperlink yang sebenarnya. Kalau tidak mengklik tab bootstrap mengacaukannya: $ ("a [href! = '']"). Not ('[href ^ = "#"]'). Bind ("klik", function ()
Ken Forslund
3

Karena belum ada yang menyebutkannya (8+ tahun kemudian): WebSocket bisa menjadi cara lain yang efektif untuk mendeteksi tab yang ditutup. Selama tab terbuka dan menunjuk ke host, klien dapat mempertahankan koneksi WebSocket aktif ke host.

Peringatan: Harap dicatat bahwa solusi ini benar-benar hanya layak untuk proyek jika WebSocket tidak memerlukan overhead signifikan tambahan dari apa yang sudah Anda lakukan.

Dalam periode waktu habis yang masuk akal (misalnya 2 menit), sisi server dapat menentukan bahwa klien telah pergi setelah WebSocket telah terputus dan melakukan tindakan apa pun yang diinginkan seperti menghapus file temp yang diunggah. (Dalam kasus penggunaan khusus saya, tujuan saya adalah untuk mengakhiri server aplikasi localhost tiga detik setelah koneksi WebSocket turun dan semua aktivitas CGI / FastCGI berakhir - koneksi tetap-hidup lainnya tidak mempengaruhi saya.)

Saya mempunyai masalah dalam menjalankan pengendali event onunload untuk bekerja dengan benar dengan suar (seperti yang direkomendasikan oleh jawaban ini ). Menutup tab tampaknya tidak memicu suar dan tab yang terbuka memicunya dengan cara yang berpotensi menyebabkan masalah. WebSocket memecahkan masalah yang saya temui dengan lebih bersih karena koneksi menutup kira-kira pada waktu yang sama ketika tab menutup dan berpindah halaman dalam aplikasi hanya membuka koneksi WebSocket baru dengan baik dalam jendela tunda.

CubicleSoft
sumber
2
tidak apa-apa. Tapi, tidak bisakah Anda membagikan kode atau prosedur apa pun untuk menanganinya? Tanpa itu untuk noob seperti saya tidak bisa mengerti
P Satish Patro
Sebenarnya, saya tidak jelas dalam komentar pertama saya. Saya tidak tahu soket web. Jadi, saya hanya ingin melihat bagaimana menangani
P Satish Patro
1
Tautan dalam komentar saya di atas mengarah ke beberapa contoh kode JS WebSocket. Bagian JS klien adalah bagian yang mudah. Kode itu untuk kasus penggunaan saya yang sangat spesifik di mana saya harus mengakhiri seluruh server aplikasi secara tepat waktu. Bagaimana Anda menulis server WebSocket terserah Anda dan memerlukan konfigurasi sisi-server untuk menghubungkan semuanya (banyak orang lebih memilih backend NodeJS dengan frontend Nginx). Menulis server berkemampuan TCP / IP adalah topik kompleks yang tidak cocok untuk diskusi dalam komentar dan terlalu sulit untuk mengaturnya hanya untuk mendeteksi masalah khusus ini.
CubicleSoft
2
//Detect Browser or Tab Close Events
$(window).on('beforeunload',function(e) {
  e = e || window.event;
  var localStorageTime = localStorage.getItem('storagetime')
  if(localStorageTime!=null && localStorageTime!=undefined){
    var currentTime = new Date().getTime(),
        timeDifference = currentTime - localStorageTime;

    if(timeDifference<25){//Browser Closed
       localStorage.removeItem('storagetime');
    }else{//Browser Tab Closed
       localStorage.setItem('storagetime',new Date().getTime());
    }

  }else{
    localStorage.setItem('storagetime',new Date().getTime());
  }
});

JSFiddle Link

Hai semua, saya dapat mencapai klik 'Deteksi Browser dan Tab Tutup Acara' dengan menggunakan penyimpanan lokal dan stempel waktu. Semoga Anda semua bisa menyelesaikan masalah Anda dengan menggunakan solusi ini.

Setelah penelitian awal saya menemukan bahwa ketika kami menutup browser, browser akan menutup semua tab satu per satu untuk sepenuhnya menutup browser. Oleh karena itu, saya mengamati bahwa akan ada sedikit waktu tunda antara menutup tab. Jadi saya mengambil waktu tunda ini sebagai titik validasi utama saya dan dapat mencapai deteksi acara browser dan tab close.

Saya mengujinya di Chrome Browser Versi 76.0.3809.132 dan ternyata berfungsi

:) Pilih jika Anda menemukan jawaban saya membantu ....

ramojuraju
sumber
Nah, ini memberi saya ide. Saya mengatur cap waktu ditambah 10 detik di penyimpanan lokal setelah login dan pada acara sebelumunload. Sedang memuat saya memverifikasi jika waktu berlalu, kemudian mengarahkan ulang ke halaman login. Terima kasih :)
G4BB3R
1
window.onbeforeunload = function() {
  console.log('event');
  return false; //here also can be string, that will be shown to the user
}
IvanM
sumber
2
here also can be string, that will be shown to the useritu tidak, di firefox, itu di chrome namun ...
TrySpace
Nilai pengembalian (string) apa pun hanya ditampilkan di MSIE <= 11. Jadi pada dasarnya tidak berguna untuk semua browser lainnya.
OSWorX
1

Dimungkinkan untuk memeriksanya dengan bantuan window.closed di event handler pada acara 'unload' seperti ini, tetapi penggunaan timeout diperlukan (jadi hasilnya tidak dapat dijamin jika ada penundaan atau mencegah penutupan jendela):

Contoh JSFiddle (Diuji pada lates Safari, FF, Chrome, Edge dan IE11)

var win = window.open('', '', 'width=200,height=50,left=200,top=50');
win.document.write(`<html>
   <head><title>CHILD WINDOW/TAB</title></head>
   <body><h2>CHILD WINDOW/TAB</h2></body>
</html>`);
win.addEventListener('load',() => {
    document.querySelector('.status').innerHTML += '<p>Child was loaded!</p>';
});
win.addEventListener('unload',() => {
    document.querySelector('.status').innerHTML += '<p>Child was unloaded!</p>';
    setTimeout(()=>{
        document.querySelector('.status').innerHTML +=  getChildWindowStatus();
    },1000);
});
win.document.close()
document.querySelector('.check-child-window').onclick = ()=> {
    alert(getChildWindowStatus());
}
function getChildWindowStatus() {
  if (win.closed) { 
      return 'Child window has been closed!';
  } else {
      return 'Child window has not been closed!';
  }
}
Rvach.Flyver
sumber
1

Saya telah mencoba semua solusi di atas, tidak ada satupun yang benar-benar bekerja untuk saya, khususnya karena ada beberapa komponen Telerik dalam proyek saya yang memiliki tombol 'Tutup' untuk jendela sembulan, dan ia menyebut acara 'sebelumuntuk memuat'. Juga, tombol pemilih tidak berfungsi dengan baik ketika Anda memiliki kisi-kisi Telerik di halaman Anda (maksud saya tombol di dalam kisi) Jadi, saya tidak dapat menggunakan saran di atas. Akhirnya ini solusinya bekerja untuk saya. Saya telah menambahkan acara onUnload di tag tubuh _Layout.cshtml. Sesuatu seperti ini:

<body onUnload="LogOff()">

dan kemudian menambahkan fungsi LogOff untuk mengalihkan ke Akun / LogOff yang merupakan metode bawaan di Asp.Net MVC. Sekarang, ketika saya menutup browser atau tab, itu mengarahkan ulang ke metode LogOff dan pengguna harus masuk ketika kembali. Saya sudah mengujinya di Chrome & Firefox. Dan itu berhasil!

  function LogOff() {
        $.ajax({
            url: "/Account/LogOff",
            success: function (result) {

                                        }
               });
       }
Amir978
sumber
0
window.onbeforeunload = function ()
{       

    if (isProcess > 0) 
    {
        return true;       
    }   

    else
    { 
        //do something      
    }
}; 

Fungsi ini menampilkan kotak dialog konfirmasi jika Anda menutup jendela atau me-refresh halaman selama proses apa pun di browser. Fungsi ini berfungsi di semua browser. Anda harus mengatur isProcess var dalam proses ajax Anda.

Hari
sumber
sampel lengkap untuk set isProcess?
Kiquenet
0
window.addEventListener("beforeunload", function (e) {
 var confirmationMessage = "tab close";

 (e || window.event).returnValue = confirmationMessage;     //Gecko + IE
 sendkeylog(confirmationMessage);
 return confirmationMessage;                                //Webkit, Safari, Chrome etc.
}); 
pengguna3098847
sumber
Sebenarnya saya ingin menampilkan Pesan konfirmasi jika pengguna menutup Tab HANYA. Ini bekerja untuk saya. Tapi saya menghadapi masalah itu, Jika saya mengklik tautan apa pun dari halaman yang sama maka juga akan menampilkan pesan konfirmasi. Untuk moe rujuk: w3schools.com/code/tryit.asp?filename=FEK2KWUN9R8Z @Tunaki
Mohammed
1
apa sendkeylog?
Kiquenet
0

Seperti yang disebutkan @jAndy, tidak ada kode javascript yang tepat untuk mendeteksi jendela yang ditutup. Saya mulai dari apa yang @Syno usulkan.

Saya telah melewati situasi seperti itu dan asalkan Anda mengikuti langkah-langkah ini, Anda akan dapat mendeteksinya.
Saya mengujinya di Chrome 67+ dan Firefox 61+.

var wrapper = function () { //ignore this

var closing_window = false;
$(window).on('focus', function () {
    closing_window = false; 
   //if the user interacts with the window, then the window is not being 
   //closed
});

$(window).on('blur', function () {

    closing_window = true;
    if (!document.hidden) { //when the window is being minimized
        closing_window = false;
    }
    $(window).on('resize', function (e) { //when the window is being maximized
        closing_window = false;
    });
    $(window).off('resize'); //avoid multiple listening
});

$('html').on('mouseleave', function () {
    closing_window = true; 
    //if the user is leaving html, we have more reasons to believe that he's 
    //leaving or thinking about closing the window
});

$('html').on('mouseenter', function () {
    closing_window = false; 
    //if the user's mouse its on the page, it means you don't need to logout 
    //them, didn't it?
});

$(document).on('keydown', function (e) {

    if (e.keyCode == 91 || e.keyCode == 18) {
        closing_window = false; //shortcuts for ALT+TAB and Window key
    }

    if (e.keyCode == 116 || (e.ctrlKey && e.keyCode == 82)) {
        closing_window = false; //shortcuts for F5 and CTRL+F5 and CTRL+R
    }
});

// Prevent logout when clicking in a hiperlink
$(document).on("click", "a", function () {
    closing_window = false;
});

// Prevent logout when clicking in a button (if these buttons rediret to some page)
$(document).on("click", "button", function () {
    closing_window = false;

});
// Prevent logout when submiting
$(document).on("submit", "form", function () {
    closing_window = false;
});
// Prevent logout when submiting
$(document).on("click", "input[type=submit]", function () {
    closing_window = false;
});

var toDoWhenClosing = function() {

    //write a code here likes a user logout, example: 
    //$.ajax({
    //    url: '/MyController/MyLogOutAction',
    //    async: false,
    //    data: {

    //    },
    //    error: function () {
    //    },
    //    success: function (data) {
    //    },
    //});
};


window.onbeforeunload = function () {
    if (closing_window) {
        toDoWhenClosing();
    }
};

};

Bruno Henrique
sumber
1
Anda memiliki beberapa masalah dalam kode javascript Anda. Hal pertama yang saya perhatikan adalah Anda akan terus mengikat resizeketika jendela buram. Jika 100x kabur maka Anda akan memiliki 100 pendengar, yang akhirnya akan memperlambat browser.
Kyle
Saya menaruh $ (window) .off ('resize'), apakah ini cukup?
Bruno Henrique
Secara teknis, tetapi itu juga akan menghapus penangan lain yang ditambahkan di tempat lain melalui jQuery.
Kyle
-2

coba ini, saya yakin ini akan berhasil untuk Anda.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type='text/javascript'>
    $(function() {

        try{
            opera.setOverrideHistoryNavigationMode('compatible');
            history.navigationMode = 'compatible';
        }catch(e){}

        function ReturnMessage()
        {
            return "wait";
        }

        function UnBindWindow()
        {
            $(window).unbind('beforeunload', ReturnMessage);
        }

        $(window).bind('beforeunload',ReturnMessage );
    });
</script>
Tejash Raval Prajapati
sumber
-3

Coba ini. Itu akan berhasil. Metode pembongkaran jquery sudah tidak digunakan lagi.

window.onbeforeunload = function(event) {
    event.returnValue = "Write something clever here..";
};
Arda Ç.
sumber