在第一页加载之前设置时区cookie

时间:2015-01-29 23:01:51

标签: javascript asp.net cookies

在我的ASP.NET网站上,我有很多带有时间戳的页面。我想将服务器时间的时间戳转换为浏览器时间。为此,我需要在代码隐藏中获得客户端的时区偏移量。

我尝试的是使用JavaScript在每个页面的TimezoneOffset中设置<head> Cookie。但它(显然)在第一次加载页面时没有用(并且之前没有设置cookie)。

是否有任何优雅的解决方案可以将日期从服务器转换为客户端时间?

我看到的唯一解决方案是在TimezoneOffset中检查Page_Load cookie,然后重定向到将设置此cookie的虚拟页面,然后使用JS重定向回原始页面,但我不喜欢这个解决方案。

2 个答案:

答案 0 :(得分:0)

我不认为您可以在访问页面之前访问任何用户的信息,但您可以在头脑中检查cookie并重新加载页面。这看起来像这样:

var time = getCookie("timezoneoffset");
if(time !== undefined) {
    //congrats, the timezone is set!
} else {
    //set the cookie here, then do this:   
    location.reload()
}

答案 1 :(得分:0)

您可以在设置cookie后通过刷新来使用Wyatt的解决方案(当然,您必须忽略真正的第一个请求,因为它没有cookie)

var time = getCookie("timezoneoffset");
if(time != undefined) {
    //congrats, the timezone is set!
} else {
    //set the cookie here, then do this ....
    location.reload();
}

您是否考虑过这个转型客户端?它可能是一个更好的解决方案(但很大程度上取决于您的应用程序架构)。

此外,您可以将潜在客户限制为接受cookie的人(但这是另一个故事)。