다음과 같이 코드 코드를 복사하십시오.
// function Wind
// function window.onbeforeunload () {alert ( '이것은 당신이하고 싶은 일입니다. 웹 페이지를 닫기 전에하십시오! ")}
함수 Window.OnOAD () {
if (window.screenLeft> = 10000 && Wind
Alert (Window.ScreenLeft+","+Window.ScreentOp);
// 사용자가 정상적으로 닫아야 할 때 트리거 해야하는 조치
위치 = 'handler1.ashx';
}
}
</스크립트>
핸들러 1.ASHX :
다음과 같이 코드 코드를 복사하십시오.
시스템 사용;
System.collections.gneric 사용;
System.linq 사용;
System.Web 사용;
System.Web.Services 사용;
system.web.sessionstate 사용;
네임 스페이스 웹 애플리케이션 1
{{
/// <요약>
/// $ CodeBehindClassName $ 요약 설명
/// </summary>
[WebService (네임 스페이스 = "http://tempuri.org/")]
[WebServiceBinding (conformsto = wsiprofiles.basicprofile1_1)]
공개 클래스 handler1 : ihttphandler, iRequiressessionState
{{
Public Void ProcessRequest (HTTPContext Context)
{{
context.response.contentType = "Text/Plain";
context.session.abandon ();
context.session.clear ();
}
공개 부실이 있습니다
{{
얻다
{{
거짓을 반환합니다.
}
}
}
}
설명하다:
회원의 일반 회원 형태는 회원 로그인 후 세션 또는 쿠키를 설정 한 다음 새로운 새로운 새로운 새로운 새로운 새로운 새로 연결을 종료하거나 종료해야합니다. 회원이 창을 직접 닫으면 출구와 관련된 일련의 출구가 트리거되지 않았습니다. 그리고 서버 세션이 만료 될 때까지 이들이 지울 것입니다.
다행스럽게도 마침내 제목 표시 줄인 Alt+F4를 사용하여 사용자를 캡처하는 방법을 찾았습니다. 제목 표시 줄, 오른쪽 클릭, 제목 표시 줄을 두 번 클릭 한 다음 직접 닫는 버튼을 누릅니다. 물론 작업 표시 줄을 최소화하기 위해 캡처 할 수 없습니다.
다음과 같이 코드 코드를 복사하십시오.
<script language = "javaScript">
<!-
함수 Window.OnOAD () {
if (window.screenleft> = 10000 && screentop> = 10000) ||.
{{
// 사용자가 정상적으로 닫아야 할 때 트리거 해야하는 조치
}
}
->
</스크립트>
설명 :
Window.screenLect = 10000 + 테두리 너비 (2 × 2) = 10004
Window.screntop = 10000 + 도구 모음 높이 + 제목 바 높이 = 10097
OnBeforeUnload의 화면의 이러한 좌표 특성은 정상 값이라는 것을 설명해야합니다.
Screenleft : 화면의 왼쪽 상단 모서리를 기준으로 브라우저 클라이언트 영역의 왼쪽 상단 모서리의 X 좌표를 가져옵니다.
Screentop : 화면의 왼쪽 상단 모서리와 비교하여 브라우저 클라이언트 영역의 왼쪽 상단 모서리의 Y 좌표를 가져옵니다.
창이 파괴 될 때 특별한 가치가 생성 될 것 같아요. 정상적인 상황에서는 값이 값을 초과하지 않습니다.
이제 문제는 OnBeforeUnload에서 Window.Location을 사용하면 일반적으로 지정된 URL에 요청을 제출할 수 있지만 OnUnload 이벤트에서는 메소드를 효과적으로 실행할 수 없다는 것입니다. 해결책은 새 창을 열어 닫는 것입니다.
우리는 일련의 Window.location 대신 그러한 단어를 쓸 수 있습니다. 포털 웹 사이트에는 여러 크로스 서버 웹 사이트 서버가 포함되기 때문입니다. 통합 입구를 종료 한 후에는 포털의 예상 효과를 달성하기 위해 순서대로 나가야합니다.
var newwindow;
Window.opner = null;
NewWindow = Window.Open (URL, PagEname, 'height = 0, width = 0');
NewWindow.opner = null;
NewWindow.close ();
님프
이 코드 세그먼트는 객체가 파괴되기 직전에 트리거되므로 window.close를 사용하지 않습니다. onbeforeunload는 제거 전에 페이지가 트리거되는 이벤트입니다.
So -Called Removal은 본질적으로 새 창을 열어 출구를 직접 작동시키는 페이지입니다. 호출되면 1 ~ 2 초 동안 일시 중지되거나 특별 종료 페이지의 창을 닫을 수 있습니다. 페이지는 정상적으로 종료되어 홈페이지로 다시 삭감됩니다.
[참고] Window.Onload에서 판단하지 않으면 새로 고침 페이지를 판단하지 않으면 이벤트가 트리거됩니다. 따라서 일부 일반 작업을 차단하기 위해 특정 작업을 판단하고 포착해야합니다.
연속 : 사용자가 직접 창을 닫기 전에 세션을 지우는 방법
어제, 나는 구현의 구현을 설명했지만 실제 작업에서는 프로그램을 정상적으로 실행할 수 있도록 지연을 추가해야한다는 것이 밝혀졌습니다. 구현 세부 사항은 아래에 첨부되어 있으며 간단한 시간 지연 기능이 첨부됩니다. 코드가 테스트되었습니다.
다음과 같이 코드 코드를 복사하십시오.
<script language = "javaScript">
함수 Window.onoad ()
{{
var newwindow;
if (window.screenleft> = 10000 && screentop> = 10000) ||.
{{
NewWindow = Window.Open ( '종료 프로그램 주소', '웹 페이지 이름',
'너비 = 0, 높이 = 0, 상단 = 4000, 왼쪽 = 4000');
NewWindow.opner = null;
수면 (5000);
NewWindow.close ();
}
}
기능 수면 (밀리 초)
{{
var currentDate, barkindate = new Date ();
var beginhour, begin -minute, beginsecond, beginms;
var hourgaps, minutegaps, secondgaps, msgaps, 갭;
beginhour = begindate.gethouse ();
beginminute = begindate.getMinutes ();
beginsecond = begindate.getSeconds ();
beginms = begindate.getmilliseconds ();
~하다
{{
currentDate = 새 날짜 ();
HourGaps = currentDate.gethours () -BeginHour;
minutgaps = currentDate.getMinutes () -BeginMinute;
SecondGaps = currentDate.getSeconds () -Beginsecond;
msgaps = currentDate.getMilliseconds () -Beginms;
if (HourGaps <0) Hourgaps+= 24;
갭 = hourgaps*3600+ minutegaps*60+ secondgaps;
갭 = 갭*1000+msgaps;
} while (갭 <밀리 초);
}
</스크립트>
둘째, 창이로드되거나 종료되면 브라우저를 새로 고치려면 다음을 작동 할 수 있습니다.
<script type = "text/javaScript"언어 = "javaScript">
Window.opent.document.location.reload ();
</스크립트>
<보이 만 해당 = "Opener.Location.reload ();"> 창을 열 때 새로 고침
<Body OnOnload = "Opener.Location.reload ();"> 새로 고침