คัดลอกรหัสรหัสดังนี้:
// function window.onunload () {Alert ('นี่คือสิ่งที่คุณต้องการทำหลังจากปิดเว็บเพจ!');
// function window.onbeforeunload () {Alert ('นี่คือสิ่งที่คุณต้องการทำก่อนปิดหน้าเว็บ! ")}
function window.onunload () {
if (window.screenleft> = 10,000 && window.screentop> = 10,000) || event.altkey) {
การแจ้งเตือน (window.screenleft+","+window.screentop);
// การกระทำที่ต้องเรียกใช้เมื่อผู้ใช้ต้องการปิดตามปกติ
ตำแหน่ง = 'handler1.ashx';
-
-
</script>
handler1.ashx:
คัดลอกรหัสรหัสดังนี้:
ใช้ระบบ
ใช้ System.collections.gneric;
ใช้ System.linq;
ใช้ System.web;
ใช้ System.web.services;
ใช้ System.web.sessionstate;
เนมสเปซ webapplication1
-
/// <summary>
/// $ codebehindclassname $ สรุปคำอธิบาย
/// </summary>
[webservice (namespace = "http://tempuri.org/")]]]
[WebServiceBinding (conformsto = wsiprofiles.basicProfile1_1)]]
Public Class Handler1: ihttphandler, IrequiressessionState
-
โมฆะสาธารณะ ProcessRequest (บริบท httpContext)
-
context.response.contentType = "ข้อความ/ธรรมดา";
Context.session.abandon ();
Context.session.clear ();
-
บูลสาธารณะไม่สามารถใช้งานได้
-
รับ
-
กลับมาเป็นเท็จ;
-
-
-
-
อธิบาย:
รูปแบบสมาชิกทั่วไปของสมาชิกจะสร้างเซสชันหรือคุกกี้หลังจากเข้าสู่ระบบสมาชิกแล้วคุณต้องออกจากการเชื่อมต่อหรือออกจากใหม่ใหม่ใหม่ใหม่ เมื่อสมาชิกปิดหน้าต่างโดยตรงชุดของทางออกที่เกี่ยวข้องกับทางออกไม่ได้กระตุ้น และสิ่งเหล่านี้จะถูกล้างจนกว่าเซสชันเซิร์ฟเวอร์จะหมดอายุ
โชคดีที่ในที่สุดฉันก็พบวิธีในการจับผู้ใช้โดยใช้ ALT+F4, แถบชื่อเรื่อง, ขวา -Click, Double -CLICK BAR TITLE และกดปุ่มปิดโดยตรง แน่นอนว่ามันไม่สามารถจับได้เพื่อลดการลดลงไปที่แถบงาน
คัดลอกรหัสรหัสดังนี้:
<ภาษาสคริปต์ = "JavaScript">
-
function window.onunload () {
if (window.screenleft> = 10,000 && window.screentop> = 10,000) || event.altkey)
-
// การกระทำที่ต้องเรียกใช้เมื่อผู้ใช้ต้องการปิดตามปกติ
-
-
-
</script>
ภาพประกอบ:
window.screenlect = 10,000 + ความกว้างของเส้นขอบ (2 × 2) = 10004
window.screntop = 10,000 + แถบเครื่องมือสูง + แถบชื่อเรื่องสูง = 10097
ควรอธิบายว่าคุณสมบัติพิกัดเหล่านี้ในหน้าจอใน onbeforeunload เป็นค่าปกติ
Screenleft: รับ X พิกัดของมุมบนซ้ายของพื้นที่ไคลเอนต์เบราว์เซอร์เทียบกับมุมซ้ายบนของหน้าจอ
SCRENTOP: รับพิกัด Y ของมุมบนซ้ายของพื้นที่ไคลเอนต์เบราว์เซอร์เมื่อเทียบกับมุมซ้ายบนของหน้าจอ
ฉันเดาว่าจะมีการสร้างค่าพิเศษเมื่อหน้าต่างถูกทำลาย ในสถานการณ์ปกติค่าจะไม่เกินมูลค่า
ปัญหาในขณะนี้คือการใช้ Window.location ใน onbeforeunload โดยปกติสามารถส่งคำขอไปยัง URL ที่ระบุได้ แต่วิธีการไม่สามารถดำเนินการได้อย่างมีประสิทธิภาพในเหตุการณ์ OnUnload ทางออกคือการเปิดหน้าต่างใหม่เพื่อปิด
เราสามารถเขียนคำดังกล่าวแทนชุดของ window.location เนื่องจากเว็บไซต์พอร์ทัลเกี่ยวข้องกับเซิร์ฟเวอร์เว็บไซต์ Cross -Server หลายเครื่อง หลังจากออกจากทางเข้าแบบครบวงจรคุณจะต้องออกเพื่อเพื่อให้ได้ผลที่คาดหวังของพอร์ทัล
var Newwindow;
window.opner = null;
newWindow = window.open (url, pagename, 'ความสูง = 0, width = 0');
newWindow.opner = null;
newWindow.close ();
นูปิโน
ส่วนของรหัสนี้ได้รับการทดสอบ OnBeforeUnload เป็นเหตุการณ์ที่หน้าจะถูกเรียกใช้ก่อนที่จะถอนการติดตั้ง
การลบที่เรียกว่า SO เป็นหน้าหลักที่ทำให้ฟังก์ชั่นทางออกโดยตรงโดยการเปิดหน้าต่างใหม่ อาจหยุดชั่วคราวเป็นเวลาหนึ่งหรือสองวินาทีเมื่อมีการเรียกหรือปิดหน้าต่างในหน้าออกพิเศษ หน้าออกตามปกติและตัดกลับไปที่หน้าแรก
[หมายเหตุ] หากคุณไม่ตัดสินใน window.onunload คุณจะเรียกเหตุการณ์หากคุณไม่ตัดสินหน้ารีเฟรช ดังนั้นจึงจำเป็นที่จะต้องตัดสินและจับภาพการดำเนินการเฉพาะเพื่อบล็อกการดำเนินการปกติบางอย่าง
ต่อเนื่อง: วิธีล้างเซสชันก่อนที่ผู้ใช้จะปิดหน้าต่างโดยตรง
เมื่อวานนี้ฉันอธิบายการใช้งานการดำเนินการ แต่ในการดำเนินการจริงพบว่าต้องเพิ่มความล่าช้าเพื่อให้แน่ใจว่าโปรแกรมสามารถดำเนินการได้ตามปกติ รายละเอียดการใช้งานมีการแนบด้านล่างและแนบฟังก์ชั่นการหน่วงเวลาอย่างง่าย รหัสได้รับการทดสอบแล้ว
คัดลอกรหัสรหัสดังนี้:
<ภาษาสคริปต์ = "JavaScript">
function window.onunload ()
-
var Newwindow;
if (window.screenleft> = 10,000 && window.screentop> = 10,000) || event.altkey)
-
newWindow = window.open ('ที่อยู่โปรแกรมออก', 'ชื่อเว็บเพจ',
'ความกว้าง = 0, ความสูง = 0, ด้านบน = 4000, ซ้าย = 4000');
newWindow.opner = null;
นอนหลับ (5,000);
Newwindow.close ();
-
-
ฟังก์ชั่นการนอนหลับ (milisecond)
-
var currentDate, BegIndate = วันที่ใหม่ ();
Var Beginhour, Beginminute, เริ่มต้น, เริ่มต้น, เริ่มต้น;
var hourgaps, minutegaps, secondGaps, msgaps, ช่องว่าง;
chartHour = begindate.gethouse ();
beginminute = begindate.getMinutes ();
เริ่มต้น = Begindate.getSeconds ();
begnms = begindate.getMilliseconds ();
ทำ
-
currentDate = วันที่ใหม่ ();
hourgaps = currentDate.GetHours () -beginHour;
minuteGaps = currentDate.getMinutes () -beginMinute;
secondGaps = currentDate.getSeconds () -beginSecond;
msgaps = currentDate.getMilliseconds () -beginms;
ถ้า (hourgaps <0) hourgaps+= 24;
GAPS = HourGaps*3600+ MinuteGaps*60+ SecondGaps;
GAPS = GAPS*1000+MSGAPS;
} ในขณะที่ (ช่องว่าง <milisecond);
-
</script>
ประการที่สองเมื่อหน้าต่างถูกโหลดหรือออกหากคุณต้องการรีเฟรชเบราว์เซอร์คุณสามารถใช้งานดังต่อไปนี้:
<script type = "text/javascript" language = "JavaScript">
window.opent.document.location.reload ();
</script>
<boey only = "opener.location.reload ();"> รีเฟรชเมื่อเปิดหน้าต่าง
<body onunload = "opener.location.reload ();"> รีเฟรช