SORU
13 Temmuz 2009, PAZARTESİ


Şov nasıl yapılır&; Bu sayfanın dışında gerçekten gezinmek için istediğinizden emin misiniz?"&kaydedilen değişiklikler ne zaman"?

Burada stackoverflow, eğer başladığın için değişiklik sonra girişimi gidin uzaklaşın sayfa, bir javascript Onayla düğmesini gösterir ve sorar: "bunu yapmak istediğinden emin misin gitmek Uzak Bu sayfa?" blee dizi... falan filan

Herkesten önce bu hayata geçirdi, nasıl değişiklikler kaydedilmiş izlerim? Kendi başıma yapabileceğimi düşünüyorum, uzmanlardan iyi uygulamaları öğrenmeye çalışıyorum.

Aşağıdaki denedim ama hala çalışmıyor:

<html>
<body>
    <p>Close the page to trigger the onunload event.</p>
    <script type="text/javascript">
        var changes = false;        
        window.onbeforeunload = function() {
            if (changes)
            {
                var message = "Are you sure you want to navigate away from this page?\n\nYou have started writing or editing a post.\n\nPress OK to continue or Cancel to stay on the current page.";
                if (confirm(message)) return true;
                else return false;
            }
        }
    </script>

    <input type='text' onchange='changes=true;'> </input>
</body>
</html>

Herkes bir örnek gönderebilir miyim?

CEVAP
13 Temmuz 2009, PAZARTESİ


Güncelleme (2013)

Bu noktaya bir cevap için uygun IE6-8 ve FX1-3.5 (ki ne olduğumuzu hedefleme geri 2009 zaman yazılmış), ama oldukça güncel değil artık ve işe yaramaz en güncel tarayıcılar - sol altındaki başvuru.

window.onbeforeunload sürekli olarak tüm tarayıcılar tarafından tedavi edilir. Olmalı bir işlev başvurusu ve bir dize (orijinal cevap belirtmişti) ama bu olacak iş eski tarayıcılar için onay için çoğu görünür olsun bir şey atanır onbeforeunload (dahil olmak üzere bir işlevi döndüren null).

Bir işlev başvurusu için window.onbeforeunload ayarlamak, ancak eski tarayıcılar sadece bir dize döndürmek yerine olay returnValue ayarlamak için:

var confirmOnPageExit = function (e) 
{
    // If we haven't been passed the event get the window.event
    e = e || window.event;

    var message = 'Any text will block the navigation and display a prompt';

    // For IE6-8 and Firefox prior to version 4
    if (e) 
    {
        e.returnValue = message;
    }

    // For Chrome, Safari, IE8  and Opera 12 
    return message;
};

confirmOnPageExit eğer kullanıcı mesajı olmadan devam etmek istiyorsanız kontrol edin ve dönüş boş bunu yapamazsın. Sen hala olayı güvenilir bir şekilde onu açmak ve kapatmak için kaldırmak gerekir:

// Turn it on - assign the function that returns the string
window.onbeforeunload = confirmOnPageExit;

// Turn it off - remove the function entirely
window.onbeforeunload = null;

Cevap (2009 yılında çalıştı) orijinal

Açmak için:

window.onbeforeunload = "Are you sure you want to leave?";

Bunu kapatmak için:

window.onbeforeunload = null;

Bu standart şekilde normal bir olay bağlayabilirsiniz mi değil mi, bunu unutmayın.

Değerleri kontrol etmek için? Bu doğrulama çerçeve bağlıdır.

JQuery bu çok temel bir örnek) gibi bir şey olabilir:

$('input').change(function() {
    if( $(this).val() != "" )
        window.onbeforeunload = "Are you sure you want to leave?";
});

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Droid Life

    Droid Life

    17 Kasım 2009
  • TheScorpioTechno

    TheScorpioTe

    15 Aralık 2010
  • Visual Life

    Visual Life

    3 Temmuz 2006