阻止用户手动调用clearInterval

时间:2015-03-05 09:48:50

标签: javascript jquery setinterval clearinterval

我有一个javascript间隔(setInterval)正在运行倒计时。要在特定时间停止此间隔,我使用clearInterval。 当然,每个人都可以通过调用clearInterval函数轻松清除此间隔。

所以我想知道,如何阻止用户手动停止计时器,但仍能自行停止计时器?

3 个答案:

答案 0 :(得分:3)

虽然您可以捕获变量,但是您将setInterval的返回值存储在闭包中,以便更难以检查用户是否仍然可以:

  • 通过调试器访问
  • 猜测值(它只是一个整数)

所以,简短的回答是你不能。用户浏览器中发生的事情最终由用户控制。

如果时间问题那么重要,那么以某种方式将服务器包含在其中。 (例如,通过要求服务器仅在一定时间后释放的数据)。

答案 1 :(得分:2)

您可以这样做:

(function() {
  var _clearInterval = window.clearInterval;
    window.clearInterval = function(interval) {
      // _clearInterval(interval);  // Uncomment to enable default behaviour.
  };
})();

虽然这不是万无一失地阻止调用clearInterval,但它会严重阻碍用户手动调用clearInterval

由于用户可以完全控制浏览器,除了重写浏览器javascript引擎之外,没有万无一失的方法可以做到这一点,当然这是不太可能的。

答案 2 :(得分:0)

我想说你最多可以通过添加一些作用域来尝试和混淆setInterval。

例如,您可以在JS中创建一个对象,并为该对象分配一个方法来启动间隔。人们仍然可以在控制台中清除Interval,但不知道间隔的范围。

E.g

myGlobalObject.intervalMethod.clearInterval(myInt);

这不是防弹 - 它只是让清除int有点困难,因为写clearInterval是不够的 - 你需要知道范围。但是,任何花时间阅读开发工具JS的人都能找到这个代码。