2015-12-14 8 views
1

У меня есть приложение, написанное на платформе ASP.NET 3.5, состоящее из нескольких частей. Часть, которую я добавил к ней, связана, скажем, с созданием и обновлением задач. В настоящее время я пытаюсь добавить функциональность, которая отправляет обновление электронной почты при выходе из обновления задачи.Отправка электронной почты на выход

Есть несколько проблем, которые мне нужно рассмотреть следующие вопросы:

1) Мне нужно отправить обновление электронной почты, когда пользователь переходит от обновления задач в любой другой части приложения;

2) Мне нужно отправить электронное письмо, когда пользователь переходит от одной задачи к другой (например, вручную изменяет идентификатор задачи в URL-адресе или открывает другую задачу из избранных);

3) Мне нужно отправить электронное письмо, когда пользователь закрывает браузер.

4) Мне не нужно отправлять обновления по электронной почте, когда пользователь обновляет обновление задачи (кнопка обновления кнопки F5).

Я попытался использовать событие «beforeunload» jQuery, которое срабатывает при каждом закрытии приложения, удалении от обновления задачи или обновлении страницы. Я собирался сделать ajax-вызов веб-метода, который вызовет мой метод отправки электронной почты. Проблема с «beforeunload» заключается в том, что она не различает, обновляется ли обновление задачи, закрывается или пользователь переходит от страницы. Мне нужно знать это, потому что я не хочу отправлять электронное письмо, если пользователь остается на одной и той же задаче.

Я могу определить, обновляется ли то же обновление задачи в событии Page_Load в коде позади или если пользователь переходит к другой задаче. Это не решает проблему, потому что событие «beforeunload» срабатывает перед Page_Upload.

Другая проблема, когда пользователь имеет несколько открытых вкладок с различными задачами ...

Кто-нибудь когда-либо реализовать решение для чего-то подобного?

спасибо.

+0

Возможно, вы сможете проверить историю браузера, чтобы различать окно reload/close, но это не будет хорошо масштабироваться с вкладками Lota. Если у вас есть какая-то аутентификация на вашей странице, другая идея заключалась бы в том, чтобы изменить «когда пользователь закрывает браузер, отправлять почту» в «когда пользователь заканчивает работу, отправляет почту». – Shilly

ответ

1

Проблема решена.

Я пошел дальше и поместил метод электронной почты для обновления в отдельный поток. Я положил задержку на этот поток. Задержка обновляется как на каждой загрузке страницы, так и на каждом AJAX через веб-метод. У меня также есть таймер на передней панели, который обновляет задержку на некоторое время, если экран не работает.