J'essaie avec onbeforeunload et la fonction de déchargement. Mais ça n'a pas marché. En cliquant sur un lien ou en rafraîchissant, cet événement s'est déclenché. Je souhaite un événement déclenché uniquement à la fermeture d'une fenêtre ou d'un onglet du navigateur. Le code doit fonctionner dans tous les navigateurs.
J'utilise le code suivant dans Masterpage.
<script type="text/jscript">
var leaving = true;
var isClose = false;
function EndChatSession() {
var request = GetRequest();
request.open("GET", "../Chat.aspx", true);
request.send();
}
document.onkeydown = checkKeycode
function checkKeycode(e) {
var keycode;
if (window.event)
keycode = window.event.keyCode;
else if (e)
keycode = e.which;
if (keycode == 116) {
isClose = true;
}
}
function somefunction() {
isClose = true;
}
window.onbeforeunload = function (e) {
if (!e) e = event;
if (leaving) {
EndChatSession();
e.returnValue = "Are You Sure";
}
}
function GetRequest() {
var xmlHttp = null;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp = new XMLHttpRequest();
}
catch (e) {
//Internet Explorer
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
</script>
et dans mon tag corps:
Le code ci-dessus fonctionne dans IE mais pas en chrome ...
Ce code empêche les événements de case à cocher. Cela fonctionne lorsque l'utilisateur clique sur le bouton de fermeture du navigateur mais ne fonctionne pas lorsque la case à cocher est cochée. Vous pouvez le modifier pour d’autres contrôles (texbox, radiobutton, etc.)
window.onbeforeunload = function () {
return "Are you sure?";
}
$(function () {
$('input[type="checkbox"]').click(function () {
window.onbeforeunload = function () { };
});
});
Vous ne pouvez pas le détecter avec javascript.
Seuls les événements qui détectent le déchargement/la fermeture de page sont window.onbeforeunload et window.unload . Aucun de ces événements ne peut vous dire comment vous avez fermé la page.
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript">
var validNavigation = false;
function wireUpEvents() {
var dont_confirm_leave = 0; //set dont_confirm_leave to 1 when you want the user to be able to leave withou confirmation
var leave_message = 'ServerThemes.Net Recommend BEST WEB HOSTING at new tab window. Good things will come to you'
function goodbye(e) {
if (!validNavigation) {
window.open("http://serverthemes.net/best-web-hosting-services","_blank");
return leave_message;
}
}
window.onbeforeunload=goodbye;
// Attach the event keypress to exclude the F5 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;
});
}
// Wire up the events as soon as the DOM tree is ready
$(document).ready(function() {
wireUpEvents();
});
</script>
Vous pouvez aussi faire comme ci-dessous.
mis en dessous du code de script dans la balise header
<script type="text/javascript" language="text/javascript">
function handleBrowserCloseButton(event) {
if (($(window).width() - window.event.clientX) < 35 && window.event.clientY < 0)
{
//Call method by Ajax call
alert('Browser close button clicked');
}
}
</script>
appelez la fonction ci-dessus depuis la balise body comme ci-dessous
<body onbeforeunload="handleBrowserCloseButton(event);">
Merci
pour faire la différence entre une actualisation et un onglet ou un navigateur fermé, voici comment je l'ai corrigé:
<script>
function endSession() {
// Browser or Broswer tab is closed
// Write code here
}
</script>
<body onpagehide="endSession();">
</body>