【问题标题】:Stop Jquery timer from triggering twice on multiple browser pages阻止 Jquery 计时器在多个浏览器页面上触发两次
【发布时间】:2015-11-15 21:46:32
【问题描述】:

我在业余时间用 Jquery 开发一个小游戏来学习 Jquery。每次计时器滴答并更新存储在 cookie 中的分数时,基本概念都会添加一个点。这是处理大部分更新的计时器:

setInterval(mainTimer, 1000); //set timer
function mainTimer(){
    createPage(); //updates the page variables and shows the score
    addValues(); //increases the values

}

我遇到的问题是人们可以简单地打开多个页面,并且计时器会为每个页面触发。因此,如果您打开 4 个页面,分数的更新速度将是原来的 4 倍。

我用谷歌搜索了很多不同的东西,但我找不到任何可行的方法。 一种方法是我猜测的某种标记,但老实说,我不知道从哪里开始,因此感谢您的帮助。

我阅读了一些关于 open.window 函数来检查现有窗口的内容,但我没有找到任何具体的内容。

open.window("foo","bar"); 

【问题讨论】:

    标签: jquery timer browser-tab


    【解决方案1】:

    您也可以在 cookie 中存储时间戳和以前的值,并在更新它们之前检查那里的匹配项。因此,在间隔上,您检查当前时间戳是否在最后一个时间戳之后至少 1000 毫秒。如果是,则更新分数和时间戳,如果不是,则报错。

    也就是说,任何没有服务器端验证的 javascript 游戏都容易被“黑客攻击”。

    【讨论】:

    • 谢谢,这绝对可以。是的,我知道它很容易作弊,但它使打开多个标签成为可能有点容易:p
    • 也就是说,您是否有理由不将分数存储在局部变量中?
    • 我意识到这不是解决这个问题的正确方法。我只是添加了一个计时器来每隔几秒保存一次,而不是直接更新 cookie。感谢您的帮助
    猜你喜欢
    • 2013-01-28
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    相关资源
    最近更新 更多