【问题标题】:How to code a javascript countdown timer in a JSP page so reloading doesn't restart the timer? [duplicate]如何在 JSP 页面中编写 javascript 倒数计时器,以便重新加载不会重新启动计时器? [复制]
【发布时间】:2012-06-04 11:25:39
【问题描述】:

可能重复:
How to call a javascript function once on page load, page reloads, don't call it again

我想在 jsp 页面中调用一个 javascript 来触发倒数计时器。但是,如果用户刷新页面,我不希望重置计时器 - 它应该从剩余时间继续。我怎样才能做到这一点?

【问题讨论】:

标签: java javascript jsp timer


【解决方案1】:

在您的 cmets 中,您说您想要一个不会在每次加载页面时都重新启动的计时器。这就是我会做的......

假设您的页面名为timer.jsp,并且其中有一个开始倒计时的脚本。因此,我会执行以下操作...

  1. 当您第一次生成timer.jsp 页面时,创建一个名为TimerFinishsession 参数,其中包含计时器应该完成的日期时间。例如,如果日期时间为01/01/2012 10:00,而您的计时器为25 分钟,则您将存储值01/01/2012 10:25
  2. 每当用户显示页面时(包括第一个页面加载和每次页面刷新),这个TimerFinish 值将已经存在。您可以使用它来计算计时器完成之前的时间。将此值计算为TimerFinish - currentDateTime
  3. 在您的 javascript 中设置计时器以从您在第 2 步中计算的值开始倒计时。

因此,无论用户做什么(刷新页面等),计时器将始终从剩余时间开始,而不是简单地再次重置为 25 分钟。当用户重新加载timer.jsp 时,您只需从session 对象中读取现有的TimerFinish 值并使用它来设置剩余时间的正确值。

【讨论】:

    【解决方案2】:

    JSP 只是一种创建 HTML 的动态方式。那么,您的问题是“如何在页面加载时调用 javascript?”

    答案是。

    浏览器解析页面时会执行每个脚本。试试这个:

    <html>
      <head>
        <script>alert("from head");<script>
      </head>
    
      <body>
        <script>alert("from body");<script>
      </body>
    </html>
    

    您也可以在页面加载完成时运行脚本。 很多元素都有onload 事件。例如body 元素。所以,你可以说:

    &lt;body onload="alert('body is loaded')"&gt;

    因此,当正文加载完成时将显示警报。

    【讨论】:

    • 抱歉,我的问题是,我在 jsp 页面中有计时器,当我们进入此页面的 onload 事件时启动,但我们刷新页面再次调用此 onload 并再次设置时间。所以请提供解决方案我如何一次调用计时器,如果有任何正文刷新此页面,它将进入第一页。
    • @user1116095 如果页面被重新加载,页面也被重新加载——为什么您希望计时器重新开始?
    • @DaveNewton,因为,这个 jsp 页面对时间有限的测验有一些问题。所以我不想启动计时器。
    猜你喜欢
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多