Я создал всплывающее окно с намерением выхода, которое будет отображаться, когда пользователь захочет покинуть сайт. Это всплывающее окно сохранит запись в базе данных (если выбрано раскрывающееся меню и у клиента есть действительный уникальный ключ). Все это прекрасно работает.
Проблема, с которой я сталкиваюсь, заключается в том, что всплывающее окно не должно отображаться, если пользователю не назначен действительный уникальный ключ (созданный при отправке первой страницы). Этот ключ находится в сеансе (этот сеанс является объектом класса) ...
Вот как он создается:
Объект класса:
public class PolicyBase
{
//This will hold the whole object in terms of the policy
public string SessionKey { get; set; }
public int polKey { get; set; }
//Other items
}
НастройкаСессии:
public class SessionHelper
{
#region Session INIT
public static PolicyBase PolicyBase
{
get { return GetSession<PolicyBase>("PolicyBase"); }
set { SetSession("PolicyBase", value); }
}
}
Это мой javascript, запущенный на странице General.js, которая используется на всем сайте. Показывает, что всплывающее окно работает нормально:
addEvent(document, "mouseout", function (e) {
e = e ? e : window.event;
var from = e.relatedTarget || e.toElement;
if (!from || from.nodeName == "HTML") {
//if (event.clientY <= 0 || event.clientX <= 0 || (event.clientX >= window.innerWidth || event.clientY >= window.innerHeight)) {
if (event.clientY <= 0 || (event.clientY >= window.innerHeight)) {
$("#dialog-exit-intent").modal("show");
}
}
});
Это то, что я пытался проверить для сессии в javascript (это не работает):
addEvent(document, "mouseout", function (e) {
e = e ? e : window.event;
var from = e.relatedTarget || e.toElement;
// var session = '<%= Session["PolicyBase"] %>';
var session = localStorage.getItem("PolicyBase")
alert(session);
var varQuoteKey = localStorage.getItem("PolicyBase"); // '<%= Session["PolicyBase"] %>';
if (session.val() != null && session.val() != '') {
if (!from || from.nodeName == "HTML") {
//if (event.clientY <= 0 || event.clientX <= 0 || (event.clientX >= window.innerWidth || event.clientY >= window.innerHeight)) {
if (event.clientY <= 0 || (event.clientY >= window.innerHeight)) {
$("#dialog-exit-intent").modal("show");
}
}
}
});
В основном то, что я хочунужно проверить, существует ли сессия и не является ли она нулевой (например, работает код на c #)
public ActionResult SavePolicyLeaveReason(int exitIntentLeaveReasonKey)
{
var polBase = SessionHelper.PolicyBase;
//some code
if (polBase != null)
{
//some code
polStatus = "T";
}
else
{
polStatus = "F";
}
return Json(polStatus);
}
Можно ли мне как-нибудь это сделать? Или есть лучшее решение для этого? Я читал об ожидании окончания загрузки страницы, но даже после того, как это будет сделано, выше все равно будет проблема)