PDA

View Full Version : Làm sao bắt được nút Close trên IE



Nobboo
01-10-2004, 07:57
Có cách nào dùng Javascript để bắt sự kiện này không, thử sử dụng onUnload thì được thì khi bấm vaò các link thậm chí bấm F5 nó cũng làm y như khi bấm vaò close
Or có cách nào dùng để biết khi nào ng sử dụng tắt trình duyệt đi k, em sử dụng PHP

ParaSnake
02-10-2004, 18:17
Vì mình là 1 con người rất dễ thương nên mình giúp bạn nè :D


<INPUT TYPE=submit name=closebutton value=Close onClick=window.close() class="knp">

Đừng chết vì ngạc nhiên nhé,chỉ cần 1 dòng code thui là xong ròi,ko cần sự kiện gì đâu :D

NoZ
02-10-2004, 19:50
Nobboo, vấn đề của bạn chỉ có thể được giải quyết bằng cách sử dụng frameset vì như bạn đã thấy, nếu viết code cho sự kiện unload trên trang hiện tại thì bất cứ khi nào bạn chuyển trang (nhấn một cái link trên trang hiện tại chẳng hạn) đoạn javascript bạn viết cho sự kiện unload sẽ thực thi (vì lúc đó, trang hiện tại bị unload).

Cách giải quyết bằng frameset như sau: bạn viết thêm một trang frameset gồm 2 frame, một frame (hidden) sẽ được ẩn đi source của frame này sẽ là một trang html mà bạn sẽ viết đoạn code unload, frame còn lại (main) dùng để load tất cả các trang web khác trong website của bạn.

Làm như vậy, chỉ khi nào users của bạn tắt window thì sự kiện unload (hay onbeforeunload ) của trang html trong frame "hidden" mới xảy ra. Còn như click vô link trên một trang nào đó trong frame "main" thì sự kiện này không thể xảy ra được. Để tạo một frameset như trên, bạn có thể viết như sau
1/trang default.html


<frameset rows="100%,*" border="0" frameborder="0">
<frame src="index.html" name="main" scrolling="auto">
<frame src="hidden.html" noresize name="hidden">
</frameset>

2/ trang index.html


<html>
<body>
This is the index page<br>
<a href='testlink.html'>Test link</a>
</body>
</html>

3/trang testlink.html


<html>
<body>
This is the testlink page<br>
</body>
</html>

4/trang hidden.html


<html>
<head>
<script language=javascript>
function close()
{
alert("window closed");
}
</script>
</head>
<body onUnload=close();>
</body>
</html>

Bạn test thử xem.

NumPad0
02-10-2004, 20:48
Bạn có thể sử dụng sự kiện onUnload.


<body onLoad="closing=true" onUnload="if (closing) window.open('thanksForVisiting.html','newwin');">

<a href="nextpage.htm" onClick="closing=false">Click to go to another page..</a>

ParaSnake
03-10-2004, 00:00
hiz,mấy bác làm em hổng hiểu gì hết trơn ???
sao ko gán vào 1 button cho mau lẹ,chẳng lẽ em hiểus ai àh???
:-/

Nobboo
07-10-2004, 15:40
thank NoZ và NumPad0, cách của 2 bạn rất tốt nhưng nó mắc lại vướng ở 2 chỗ : khi bạn bấm F5 or Back(Forward) thì browser vẫn làm hàm onUnLoad, có cách nào để giải quyết nốt vấn đề này k,
mình dốt JS lắm.
cũng cám ơn ParaSnake nhưng you hiểu lầm ý mình gòi ^_^, ý mình là bắt lấy event khi nào user close browser chứ k phải bấm vào nút để tắt browser