我需要在加载页面计算当前从UTC时间偏移。这是我可以做的非常简单的通过一个JavaScript函数调用,页面主体onload事件的一部分,如下所示:ASP.Net LoadComplete事件在页面加载之前运行?
<script type="text/javascript" language="javascript">
function getOffset() {
var curUTCDate = new Date();
var iMins = curUTCDate.getTimezoneOffset();
return iMins;
}
</script>
<body id="bodymain" onload="javascript:document.forms[0]['hdnOffset'].value=getOffset();">
<form id="form1" runat="server">
<input id="hdnOffset" runat="server"/>
<asp:Label ID="lblText" runat="server"></asp:Label>
然而,当我尝试使用在代码中这个值落后于Page_LoadComplete的一部分在服务器端如下图所示
protected void Page_LoadComplete(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(hdnOffset.Value))
{
lblText.Text = hdnOffset.Value + " value set";
}
else
{
lblText.Text = " value not set ";
}
}
但是偏移确实可用作为它的值现在显示在输入框中一旦页面完全呈现偏移值尚未确定。所以对我来说,这看起来好像被称为身体onload事件的一部分的JavaScript只在Page完全加载后被调用。
这怎么可能?
因为在客户端发生身体onload事件后的页面已经完全从服务器上呈现。此时服务器上唯一发生的事件是'Unload'。如果您希望客户端到服务器的通信没有回传,您需要使用ajax。 – 2011-04-14 16:12:34