Обнаружение обновления браузера

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

Чтобы быть более понятным, предположим, что у меня есть пустая веб-форма и я хотел бы определить, нажал ли пользователь F5 на стороне клиента (в результате чего обновление не было отправлено) или нет.

Я могу использовать переменные сеанса, но если пользователь переходит на другую страницу моего сайта, а затем возвращается, я бы хотел рассматривать это как новое посещение, а не обновление. так что это не переменная области сеанса.

Спасибо.

Обновление: Единственный обходной путь, который я смог найти, - это унаследовать мои страницы от базовой страницы, переопределив метод загрузки, как показано ниже:

    public class PageBase : System.Web.UI.Page
{
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        this.Session["LastViewedPage"] = Request.RawUrl;
    }
}  

и на каждой странице, если мне было интересно узнать, является ли это обновлением:

if (this.Session["LastViewedPage"].ToString() == Request.RawUrl)
{
    // This is a refresh!
}
5
задан Kamyar 7 July 2011 в 18:49
поделиться