Silverlight 4:检测浏览器F5 /刷新和X /关闭
我想确定如何过滤F5,刷新按钮X,并在浏览器中通过silverlight 4.0或甚至在服务器端关闭。Silverlight 4:检测浏览器F5 /刷新和X /关闭
谢谢
编辑:
我添加赏金就在今天我的问题,7月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和关闭按钮,消息框不应该出现。以防万一解决方案处于预先安装状态。
感谢您的帮助!
,因为它是不可能在客户端,我做到了在服务器侧。拦截它,并阻止用户这样做 -
window.onunload = function (e) {
// Firefox || IE
e = e || window.event;
var y = e.pageY || e.clientY;
if (y < 0) {
alert("close");
}
else {
alert("refresh");
}
}
这是如何工作的? – 2013-05-20 09:19:32
没有属性检查您的应用程序是否通过按下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
客户端不可能确定应用程序启动是否是用户执行刷新操作的结果。
但是,您可以在服务器端确定正在刷新页面。您可以将以下属性添加到承载Silverlight应用程序的ASPX页面的代码隐藏内容。
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")
* Request.Headers [“Accept-Encoding”] * Request.Headers [“Accept-Charset”] * Request.Headers [“Accept-Language”] * Request.Headers [“Accept”]所有这些4,当我打F5,IsRefresh仍然是假,我错过了什么? – xscape 2010-08-12 07:34:32
即使我将其更改为此,Request.Headers [“pragma”]。Contains(“no-cache”); OR(Request.Headers [“pragma”] ??“”).Contains(“no-cache”);这是错误:未将对象引用设置为对象的实例 – xscape 2010-08-12 07:41:22
过滤器如何:
我使用此代码解决我的问题?我怀疑这是可能的。 – Rup 2010-08-11 08:26:59
我只是想知道如何,不是为了防止重新加载web服务。 – xscape 2010-08-11 08:28:04
重新加载Web服务意味着什么?如果Web服务处于某种非默认状态,请添加一些状态变量,该应用程序将在启动时进行设置,因此每次重新启动都会重置此变量,并且您会从中获取事件? – Zee 2011-07-29 14:18:40