2013-07-30 3 views
0

У меня есть JavaScript, который показывает уведомление, если в ASP.NET существует значение Session. Это, вероятно, не самое лучшее решение, которое я учусь сейчас, но вот код:JavaScript и кнопка назад/вперед браузера

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     if (Session["Alert"] != null) 
     { 
      Page.ClientScript.RegisterStartupScript(GetType(), "alert", Session["Alert"].ToString()); 
      Session["Alert"] = null; 
     } 
    } 
} 

Session["Alert"] имеет функцию JS, которая показывает уведомление:

Session["Alert"] = "showAlert('test')"; 

function showAlert(msg) { 
    alert(msg); 
} 

Если это было присвоено значение, код запускается успешно и отображается уведомление. Нажатие кнопки «Назад» браузера и последующая кнопка снова показывают предупреждение, потому что страница не проходит через свой жизненный цикл.

Как я могу предотвратить отображение предупреждения более одного раза? Я попытался добавить глобальную переменную JavaScript, например var alertShown = false;, и проверить ее в функции showAlert, но это не сработает.

Есть ли кросс-браузерный способ, которым я мог бы обойти эту проблему?

ответ

0

Ну, для начала вам придется избегать кеша навигации клиента (часто обратный/прямой на самом деле не тянет страницу назад).

После этого препятствия вы можете посмотреть (по иронии судьбы) используя переменную сеанса для хранения, если она была просмотрена [output] и только выгружать ее на страницу один раз.

Если это похоже на многое, вы можете просто добавить проверку cookie в функцию, поэтому, когда она запускается (и повторно запускается), она проверяет наличие файла cookie и, когда отсутствует, делает предупреждение и устанавливает cookie. Псевдокод:

function showAlert(msg){ 
    if (cookie[msg] == null){ // a cookie doesn't exist for this msg 
    alert(msg); // alert the msg 
    cookie[msg] = true; // set the cookie so the next pass is ignored 
    } 
} 
+0

Благодарим за информацию. Я думаю, что печенье - это путь. Я посмотрю, как получить/установить файлы cookie с помощью JS. – user982119

Смежные вопросы