window.onbeforeunload işlevi doğru IE yürütmek değil IE çünkü Bug olacakları. Bazı kısmi geri göndermeler de "Sayfayı terk etmeye çalışmak" olarak kabul edilir. Sayfadaki bir bağlantı href = "javascript: ...." (ASP.Net LinkButton bu şekilde işlenir) içeriyorsa, IE bağlantıyı tıklatıldığında pencere boşaltma olayını yanlış şekilde tetikler. bu yüzden, ben bir dirtyflag değişken tuttu ve bağlantılar href^= ile başlayan sayfa, yüklendiğinde şimdi
var __ignoreDirtyFlag = false;
$(document).ready(function() {
if ($.browser.msie) {
$('[href^="javascript:"]').bind('click.ignoreDirtyFlag', function() {
__ignoreDirtyFlag = true;
});
}
});
ekledi "javascript:" bu işlevi tahsis edecektir. bağlantı tıklandığında, __ingoreDirtyFlag değişkenini true yapar; kaldırılacak linke bağlanarak fonksiyonu yukarıda sayfanızda kullanılan herhangi asp güncelleme paneller varsa sonra
window.onbeforeunload = function globalWindowUnload() {
if (!__ignoreDirtyFlag && isDataFilled == true) {
return "You have unsaved changes on this page. If you leave this page, those changes will be lost.";
}
__ignoreDirtyFlag = false;
return;
};
eklendi. , böylece güncelleme paneli yenilendiğinde işlevi tekrar bağlantılara bağlamalıyız.
nedenle,
function foo() {
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
}
function endRequestHandler(sender, args) {
// Do your stuff
if ($.browser.msie) {
$('[href^="javascript:"]').bind('click.ignoreDirtyFlag', function() {
__ignoreDirtyFlag = true;
});
}
}
ve vücut etiketi Onload yöntemi için
, I fan() metodu assinged. Bu hack IE ile iyi çalışıyor ve <body onload="foo()">
tüm tarayıcılar :) sayesinde
o tarayıcısını kapattığında zaman kullanıcıyı çıkış veya el değiştirmektir. Çok kötü, okumak çok zor. –
* jquery * etiketini görmedim –
Hey, bu cevabın neredeyse 3 yaşında olduğunu biliyorum, ama soru jquery olarak etiketlenmediğinden cevabınızın jQuery olmayan bir sürümünü ekleyebileceğinizi düşünüyor musunuz? –