2016-04-14 69 views
1

Bir beforeunload işleyicisi, söz konusu kullanıcı aslında sayfadan ayrılsa çağrılan var:Atla işleyicisi beforeunload

$(window).on("beforeunload", function() { 
    cleanup(); 
}); 

olabilir ancak benim uygulamanın diğer bir kısmı ikinci işleyicisi her zaman ilk adı verilecek bu ilk işleyici olmayacağını

$(window).on("beforeunload", function() { 
    return "Do you really want to leave"; 
}); 

Nasıl, temin ederim: o gerçekten çünkü devam eden bir operasyon ayrılmak istiyorsa kullanıcıya sorar başka beforeunload işleyicisi ekleyin kullanıcı s karar verirken denir sayfadaki tay?

Zaten unload olayını kullanmayı denedim. Fakat bu, temizlik işlevimi ve bu işlev içindeki arka uç çağrısını güvenilir şekilde yürütmeyeceği için işe yaramıyor.

+1

Bunu deneyin: http://stackoverflow.com/questions/17759703/is-there-any-way-to-detect-if-user-pressed-stay-on-page-or-leave -page-in-bef –

+0

@IsmaelMiguel Teşekkürler, ama bu sorudaki cevapların hiçbiri benim durumumda çalışmıyor. Zaman aşımı kullanamıyorum çünkü kullanıcı kaldığında sth yapmak zorunda kalıyorum, kaldığı zaman değil. Ayrıca, "boşaltma" özelliğini kullanamıyorum çünkü temizleme işlevimde arkadan çağrı yapmalı ve "boşaltma" özelliğini kullanarak bu çağrı bazen yürütülmeyecektir. – basilikum

+0

Haklısınız. Bu şartlar aslında farklı. Farketmedi. Gerçekten üzgünüm. –

cevap

1

Durumda window.confirm'i kullanabilirsiniz. (Sözde kod)

$(window).on("beforeunload", function() { 
var result = window.confirm('Do you really want to quit?'); 
if (result) { 
    cleanup(); 
} 
} 

Bu şekilde olduğu gibi, kullanıcı isterse o temizleme olacak çıkmak için. Bu işe yarıyor mu?>

+0

Teşekkür ederim ama dediğim gibi, uyguladığımın iki farklı parçası tarafından eklenen farklı işleyicilere ihtiyacım var ve ben şeyleri ayrı tutmak istiyorum. Öyleyse, eğer bir şekilde, bu işleyicilerin aranma sırasını temin edebilir ve kullanıcı belirli bir işleyicide diyalog sırasında kalmaya karar verirse, aşağıdaki tüm işleyicileri önleyebilir. – basilikum

+0

Yani, boşaltma varsayılan olarak temizleyecek? Ayrıca, kullanıcı bir şeyleri gerçekleştirirken yalnızca kullanıcı gezinmek için ayrı bir işleyici istersiniz. –

+0

Evet, kullanıcı gerçekten ayrıldığında temizleme yapılmalı, bu yüzden teknik olarak boşaltır. Ancak, boşaltma olayı bu kadar güvenilir görünmüyor, bu yüzden ön yüklemeyi kullanmam gerekiyor. Uygulamamın bir kısmı ses kaydına başlayabilir ve eğer bir şeylerin kayıtlarının ortasındaysa gerçekten ayrılmak istiyorsa, kullanımdan yararlanabilir. Daha sonra kalmaya karar verirse, küresel temizlik çağrısı yapılmamalıdır. – basilikum