0

第一次做一些javascript。我正在玩 sessiontimeout,当我在 .aspx 页面中有代码时,它运行良好。下一步是将代码放入 .js 页面。所以这是我目前的阵容。

脚本.aspx.js

    var iddleTimeoutWarning = null;
    var iddleTimeout = null;
function pageLoad() 
{     
    if (iddleTimeoutWarning != null)
        clearTimeout(iddleTimeoutWarning);
    if (iddleTimeout != null)
        clearTimeout(iddleTimeout);    
    var millisecTimeOutWarning = <%= int.Parse(System.Configuration.ConfigurationManager.AppSettings["SessionTimeoutWarning"]) * 60 * 1000 %>;
    var millisecTimeOut = <%= int.Parse(System.Configuration.ConfigurationManager.AppSettings["SessionTimeout"]) * 60 * 1000 %>; 
    iddleTimeoutWarning = setTimeout("DisplayIddleWarning()", millisecTimeOutWarning);
    iddleTimeout = setTimeout("TimeoutPage()", millisecTimeOut);
} 

function DisplayIddleWarning() 
{                
    document.getElementById("LblWarning").innerHTML = "Warning Message";
} 

function TimeoutPage() 
{                   
    __doPostBack('FiresAutoIdle','');
}  

ASPX 页面(很确定错误在这里,因为 .js 页面中的代码有效)

<asp:ScriptManager ID="ScriptManager1" runat="server">
        <Scripts>            
            <asp:ScriptReference Path="Scripts/Script.aspx.js"/>
        </Scripts>
</asp:ScriptManager>

我在 web.config 中也有一些代码行来设置键 SessionTimeout 和 SessionTimeoutWarning。

那么,关于故障在哪里的任何想法?事情过去运行,现在他们不会。

编辑

  1. 我正在使用脚本管理器来快速处理必要的 ASP.NET AJAX 组件以启用部分回发。我需要__doPostBack。
  2. 我发现如果一个js函数被命名为pageLoad(),该函数将在页面加载或部分回发时激活。正是我需要的。

因此,asp.nex 页面没有从 .js 加载 pageLoad() 函数。

4

1 回答 1

1

解决了。

您不能在 javascript 中设置 asp 变量。所以我们必须在 ASPX 页面中设置变量,然后让 javascript 使用它们。

ASPX

<script type="text/javascript">
    var millisecTimeOutWarning = <%= int.Parse(System.Configuration.ConfigurationManager.AppSettings["SessionTimeoutWarning"]) * 60 * 1000 %>;
    var millisecTimeOut = <%= int.Parse(System.Configuration.ConfigurationManager.AppSettings["SessionTimeout"]) * 60 * 1000 %>; 
</script>

然后在 .js 文件中使用它们。

于 2012-08-08T13:28:07.020 回答