Я не уверен, как вы заставили событие onunload работать .... Проблема, которую я обнаружил при использовании события onunload, заключается в том, что оно запускается после выгрузки страницы. Это означает, что JavaScript больше не может быть выполнен, потому что страница была выгружена.
Вы должны использовать событие onbeforeunload.
Это событие немного уникально, потому что если функция, которая обрабатывает это событие, возвращает что-либо, всплывающее окно отображается с вопросом, хотят ли они продолжить операцию. Итак, в вашем случае убедитесь, что ваша функция ничего не возвращает. Еще одна вещь, которую следует отметить в отношении события onbeforeunload, - это то, что в настоящее время Opera не поддерживает его (хотя Safari, FireFox и Internet Explorer поддерживают).
Оба события onbeforeunload и onunload выполняются каждый раз, когда страница выгружается. Если элемент управления на вашей странице отправляет страницу в код сервера, страница выгружается и выполняется JavaScript.
Если вы не хотите, чтобы JavaScript выполнялся, когда элемент управления на вашей странице отправляет его на сервер, вы должны реализовать нечто, проверяющее, должен ли ваш код выполняться.
Это просто, добавьте логическое значение JavaScript на страницу и функцию, которая установит для этого логического значения значение true. Убедитесь, что каждый элемент на вашей странице, который отправляет обратно на ваш серверный код, устанавливает для этого логического значения значение true, прежде чем он отправит страницу. Проверьте это логическое значение в вашем событии onbeforeunload, чтобы увидеть, должен ли выполняться ваш код очистки.
Надеюсь, это поможет,
-Frinny