Silverlight 4: Определить браузер F5 / обновить и X / закрыть

Я хочу определить, как отфильтровать F5, кнопку обновления, X и закрыть в браузере через silverlight 4.0 или даже на стороне сервера.

благодарю вы

РЕДАКТИРОВАНИЕ:

Я добавил награду в свой вопрос только сегодня, 28 июля 2011 года. Мое предыдущее решение / ответ больше не работает в IE 9.

window.onunload = function (e) {
    // Firefox || IE
    e = e || window.event;
    var y = e.pageY || e.clientY;

    if (y < 0) {
        alert("close");
    }
    else {
        alert("refresh");
    }
}

Когда пользователь нажимает F5, обновляются, X и кнопка закрытия , окно сообщения НЕ должно появляться. На всякий случай решение находится перед загрузкой.

Спасибо за вашу помощь!

11
задан xscape 20 February 2013 в 03:51
поделиться

3 ответа

так как это невозможно на стороне клиента, я сделал это на стороне сервера.

Я решаю свою проблему, используя этот код:

window.onunload = function (e) {
        // Firefox || IE
        e = e || window.event;
        var y = e.pageY || e.clientY;

        if (y < 0) {
            alert("close");
        }
        else {
            alert("refresh");
        }
    }
2
ответ дан 3 December 2019 в 11:51
поделиться

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

Однако вы можете определить на стороне сервера, что страница обновляется. Вы можете добавить следующее свойство в код программной части страницы ASPX, на которой размещено приложение Silverlight.

public bool IsRefresh
{
   get { Request.Headers["pragma"] ?? "").Contains("no-cache"); }
}

Теперь вы используете это свойство для условного включения значения в плагин silverlight initParams .

<object ...>
   <param name="initParams" value="IsRefresh=<%=IsRefresh.ToString()%>" />
</object>

Затем в коде Silverlight вы можете определить, загружалось ли приложение в последний раз в результате обновления, с помощью: -

if (Application.Current.Host.InitParams["IsRefresh"]  == "True")
2
ответ дан 3 December 2019 в 11:51
поделиться

Нет свойства, чтобы проверить, загружено ли ваше приложение, нажав кнопку F5, но вы можете обработать событие запуска приложения и установить переменную с датой и временем. В тот момент, когда ваша страница загружается, вы можете проверить, был ли временной интервал всего пару секунд назад. Итак, теперь вы знаете, что приложение загружается в первый раз или кнопка F5 нажата, когда это было всего пару секунд назад. Не знаю, достаточно ли этого для вас, но вы можете попробовать:

App.xaml.cs

public class App : Application
{
 private DateTime appStartupTime {get; set};
 public App()
 {
     Startup += new EventHandler(Application_Startup);
 } 

 void Application_Startup(object sender, StartupEventArgs e)
 {
   //initialize the startupTime
   appStartupTime = DateTime.Now; 
 }
 public bool IsApplicationReLoaded
 {
   get
   {
     //return true if your app is started less 10 seconds ago
     return DateTime.Now.AddSeconds(-10) < appStartupTime;
   }
  }
}

Теперь вы можете начать использовать приведенный ниже код отовсюду

(Application.Current as App).IsApplicationReloaded
0
ответ дан 3 December 2019 в 11:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: