Hi,
I want to determine how to filter F5 or the refresh button in browser in silverlight 4.0.
thank you
Hi,
I want to determine how to filter F5 or the refresh button in browser in silverlight 4.0.
thank you
There is no property to check if your application is loaded by pressing the F5-button but you could handle the application startup event and set a variable with a datetime. The moment your page gets loaded you can check if the timespan is just a couple of seconds ago. So now you know that the application is loaded the first time or the F5-button is pressed when that time it is only a couple of seconds ago. I don't know if this is sufficient for you but you can give it a try:
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;
}
}
}
Now you can start using the code below from everywhere
(Application.Current as App).IsApplicationReloaded
It is not possible client-side to determine whether an application startup is the result of a refresh operation performed by the user.
However you can determine at serverside that a page is being refreshed. You can add the following property to the code-behind of the ASPX page hosting the Silverlight application.
public bool IsRefresh
{
get { Request.Headers["pragma"] ?? "").Contains("no-cache"); }
}
Now you use this property to conditionally include a value in the silverlight plugin initParams
.
<object ...>
<param name="initParams" value="IsRefresh=<%=IsRefresh.ToString()%>" />
</object>
Then in silverlight code you can determine if the application was last loaded as a result of a refresh with:-
if (Application.Current.Host.InitParams["IsRefresh"] == "True")
since it is not possible in client side, i did it in server side.
I solve my problem using this code:
window.onunload = function (e) {
// Firefox || IE
e = e || window.event;
var y = e.pageY || e.clientY;
if (y < 0) {
alert("close");
}
else {
alert("refresh");
}
}