【发布时间】:2011-08-05 16:19:57
【问题描述】:
我需要计算加载页面时与 UTC 时间的当前偏移量。我可以通过作为页面正文 onload 事件的一部分的 javascript 函数调用非常简单地做到这一点,如下所示:
<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 仅在页面完全加载后才被调用。
这怎么可能?
【问题讨论】:
-
因为在页面从服务器完全渲染后,body onload 事件发生在客户端。此时服务器上发生的唯一事件是
Unload。如果您希望在没有回发的情况下进行客户端到服务器的通信,则需要使用 ajax。
标签: javascript asp.net