in reply to Script Unload??

There is nothing that will work on all browsers. They can't even agree on HTML specifications... :-)

I don't think you can solve this problem from the browser side. What I would do is your last suggestion: time out the users. If a user spends more than x minutes without activity, log them out automatically. I don't think it is as hard as you think. Assuming you are writing your chat scripts in Perl (otherwise, why would you be asking here), you could keep a hash indexed by user name where you store time() every time that user says something. Then, every once in a while (like every time anyone talks, or every fixed number of seconds) go through the hash and expire those users for which (time()-$hash{user})>(x*60).

If you want to be even more efficient, you could store the user times in a timer queue (sorted by time) so that you can remove from the start/end of the queue without having to traverse all of it.

This reminded me of a Perl package I wrote some time ago for a project I worked on, that implemented a finite time queue. You may be able to use it as a starting point. I could not upload it to the code catacombs (too large) so you can get it here.