次のようにコードコードをコピーします。
// function window.onunload(){alert( 'これはあなたがしたいことです、Webページを閉じた後にそれを行います!');
// function window.onbeforeunload(){alert( 'これはあなたがやりたいことです、ウェブページを閉じる前にそれをしてください! ")}
function window.onunload(){
if(windo.screenleft> = 10000 && windop.screentop> = 10000)||。
alert(window.screenleft+"、"+window.screentop);
//ユーザーを正常に閉じる必要があるときにトリガーする必要があるアクション
location = 'handler1.ashx';
}
}
</script>
Handler1.ashx:
次のようにコードコードをコピーします。
システムの使用。
System.collections.gnericを使用しています。
System.linqを使用しています。
system.webを使用しています。
System.Web.Servicesを使用しています。
System.Web.SessionStateを使用しています。
名前空間WebApplication1
{{
/// <summary>
/// $ codebehindclassname $ summary説明
/// </summary>
[webservice(namespace = "http://tempuri.org/")]
[webservicebinding(compormsto = wsiprofiles.basicprofile1_1)]
パブリッククラスハンドラー:ihttphandler、iRequiressessionState
{{
public void processRequest(httpcontextコンテキスト)
{{
context.response.contenttype = "text/plain";
context.session.abandon();
context.session.clear();
}
パブリックブールIsReusable
{{
得る
{{
falseを返します。
}
}
}
}
説明する:
メンバーの一般的なメンバーフォームは、メンバーのログイン後にセッションまたはCookieを確立し、その後、新しいNew New Newで接続を終了するか、終了する必要があります。メンバーがウィンドウを直接閉じたとき、出口を含む一連の出口はトリガーされませんでした。そして、これらはサーバーセッションが期限切れになるまでクリアされます。
幸いなことに、私はついに、Alt+F4、タイトルバー、右クリック、タイトルバーをダブルクリックし、閉鎖ボタンを直接押してユーザーをキャプチャする方法を見つけました。もちろん、タスクバーの最小化のためにキャプチャすることはできません。
次のようにコードコードをコピーします。
<スクリプト言語= "javascript">
<! -
function window.onunload(){
if(window.screenleft> = 10000 && windop.screentop> = 10000)||。
{{
//ユーザーを正常に閉じる必要があるときにトリガーする必要があるアクション
}
}
- >
</script>
説明:
window.screenlect = 10000 + border width(2×2)= 10004
window.screntop = 10000 +ツールバーハイ +タイトルバー高= 10097
onbeunloadの画面内のこれらの座標プロパティが通常の値であることを説明する必要があります。
ScreenLeft:画面の左上隅に比べて、ブラウザクライアント領域の左上隅のX座標を取得します。
スクリーントップ:画面の左上隅と比較して、ブラウザクライアント領域の左上隅のY座標を取得します。
ウィンドウが破壊されると、特別な値が生成されると思います。通常の状況では、値は値を超えません。
問題は、window.location onbeforeunloadでwindow.locationを使用すると、通常は指定されたURLにリクエストを送信できますが、このメソッドはonunloadイベントで効果的に実行できないことです。解決策は、新しいウィンドウを開いて閉じることです。
一連のwindow.locationの代わりにそのような単語を書くことができます。ポータルWebサイトには、複数のクロスサーバーWebサイトサーバーが含まれるためです。統一された入り口を終了した後、ポータルの予想される効果を達成するために順番に終了する必要があります。
var NewWindow;
window.opner = null;
newWindow = window.open(url、pageName、 'height = 0、width = 0');
newWindow.opner = null;
newWindow.Close();
ニンポ
オブジェクトが破壊される直前にイベントがトリガーされるため、コードのこのセグメントはwindose.closeを使用しないでください。 onbeunloadは、アンインストール前にページがトリガーされるイベントです。
so -calledの削除は、基本的に、新しいウィンドウを開くことで出口機能を直接行うページです。呼び出されたときに1〜2秒間一時停止するか、特別な出口ページで窓を閉じた場合があります。ページは正常に終了し、違いは、個別に制御する必要がないことです。
[注] window.onunloadで判断しない場合、更新ページを判断しない場合は、イベントをトリガーします。したがって、いくつかの通常の操作をブロックするために、特定の操作を判断およびキャプチャする必要があります。
連続:ユーザーがウィンドウを直接閉じる前にセッションをクリアする方法
昨日、実装の実装について説明しましたが、実際の操作では、プログラムを正常に実行できるように遅延を追加する必要があることがわかりました。実装の詳細は以下に添付され、単純な時間遅延機能が添付されています。コードがテストされています。
次のようにコードコードをコピーします。
<スクリプト言語= "javascript">
関数window.onunload()
{{
var NewWindow;
if(window.screenleft> = 10000 && windop.screentop> = 10000)||。
{{
newWindow = window.open( 'exitプログラムアドレス'、「ウェブページ名」、
'width = 0、height = 0、top = 4000、left = 4000');
newWindow.opner = null;
睡眠(5000);
newWindow.Close();
}
}
機能スリープ(Milisecond)
{{
var currentdate、begindate = new date();
var beginhour、begin -minute、beginecond、beginms;
var Howargaps、mineminggaps、secondgaps、msgaps、gaps;
beginhour = begindate.gethouse();
beginminute = begindate.getMinutes();
beginsecond = begindate.getSeconds();
beginms = begindate.getmilliseconds();
する
{{
currentDate = new Date();
hourgaps = currentdate.gethours()-beginhour;
mineminggaps = currentDate.getMinutes()-BeginMinute;
secondgaps = currentDate.getSeconds()-beginSecond;
msgaps = currentDate.getMilliseConds()-beginms;
if(hourgaps <0)hourgaps+= 24;
gaps = howargaps*3600+ minemgaps*60+ secondgaps;
gaps = gaps*1000+msgaps;
} while(gaps <milisecond);
}
</script>
第二に、ウィンドウがロードまたは終了された場合、ブラウザを更新する場合は、次の操作を行うことができます。
<script type = "text/javascript"言語= "javascript">
window.opent.document.location.reload();
</script>
<boeyのみ= "opener.location.reload();">ウィンドウを開くときに更新
<body onunload = "opener.location.reload();">更新