私はonbeforeunloadとUnload機能を試しています。しかし、うまくいきませんでした。リンクをクリックするか更新すると、このイベントがトリガーされます。ブラウザウィンドウまたはタブが閉じられたときにのみトリガーされるイベントが必要です。コードはすべてのブラウザで動作する必要があります。
マスターページで次のコードを使用しています。
<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>
そして私のbodyタグで:
上記のコードはIEで動作しますが、クロムでは動作しません...
このコードは、チェックボックスイベントを防ぎます。ユーザーがブラウザの閉じるボタンをクリックした場合は機能しますが、チェックボックスがクリックされた場合は機能しません。他のコントロール(texbox、ラジオボタンなど)用に変更できます。
window.onbeforeunload = function () {
return "Are you sure?";
}
$(function () {
$('input[type="checkbox"]').click(function () {
window.onbeforeunload = function () { };
});
});
Javascriptでは検出できません。
ページのアンロード/クローズを検出するイベントのみが window.onbeforeunload および window.unload です。これらのイベントはどちらも、ページを閉じた方法を伝えることはできません。
<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>
JavaScriptを使用して、ユーザーがブラウザータブを閉じたかどうか、ブラウザーを閉じたかどうか、またはブラウザーを離れたかどうかを検出できますか?
以下のようにすることもできます。
ヘッダータグのスクリプトコードの下に置く
<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>
以下のようにbodyタグから上記の関数を呼び出します
<body onbeforeunload="handleBrowserCloseButton(event);">
ありがとうございました
更新と閉じたタブまたはナビゲーターを区別するために、ここで修正します:
<script>
function endSession() {
// Browser or Broswer tab is closed
// Write code here
}
</script>
<body onpagehide="endSession();">
</body>