gpt4 book ai didi

Javascript 客户端和 asp.net 事件处理程序计时问题 - 如何解决?

转载 作者:行者123 更新时间:2023-12-03 08:25:56 25 4
gpt4 key购买 nike

具有母版页和多个子页面的简单网站。

在 page_load 中,母版页查找包含值的 session 变量,如果存在,则使用

Page.ClientScript.RegisterStartupScript(this.GetType(), "SessionAlert", "SessionExpireAlert(" + sessionTimeout + ");", true);

这会启动超时警报,效果很好。

一个子页面上有一个服务器端按钮,可以有效地结束该页面上的用户交互,并留下一条消息,指出“如果您想做更多事情,请重新登录”。单击此按钮时,我想清除 session 变量(简单)并结束运行超时警告警报脚本(不那么容易)。

由于主“page_load”事件在按钮处理程序之前触发,因此在页面重新加载时,它会重新启动超时脚本。当它点击按钮事件处理程序并清除 session 变量时,为时已晚,因为脚本已经在运行。

我尝试使用“registerclientscriptblock”注入(inject)即时javascript来调用我拥有的“clearTimeout()”客户端函数,但它似乎无法找到母版页上存在的函数并出现错误.

这似乎是一个经典的“先有鸡还是先有蛋”的场景,只见树木不见森林。在我把自己逼疯之前,有人能帮我指出正确的方向吗?

编辑添加了一些 JavaScript 代码:

目前,page_load 代码引用的母版页函数“SessionExpireAlert”包含以下内容:

                 window.updateInterval = setInterval(function () {
seconds--;
document.getElementById("idleTime").innerHTML = convertTime(seconds);
document.getElementById("expireTime").innerHTML = convertTime(seconds);
}, 1000);

最佳答案

RegisterStartupScript 会将脚本添加到正文的末尾,因此 DOM 在运行时已准备就绪。只要您之后始终使用 RegisterStartupScript,那么脚本就会按照您创建脚本的顺序添加并执行。

基本上,RegisterClientScriptBlock 很可能会将脚本放置在使用 RegisterStartupScript 添加的任何脚本之前。

关于Javascript 客户端和 asp.net 事件处理程序计时问题 - 如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33545168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com