繁体   English   中英

在首页加载之前设置时区cookie

[英]Set timezone cookie BEFORE first page load

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

我尝试的是使用JavaScript在每个页面的<head>中设置TimezoneOffset cookie。 但是(显然)在首次加载页面(并且之前未设置cookie)时不起作用。

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

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

我认为您无法在用户进入页面之前访问任何用户的信息,但是您可以在头上检查Cookie并重新加载页面。 看起来像这样:

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

您可以通过在设置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的客户(但这是另一回事)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM