簡體   English   中英

防止用戶手動調用clearInterval

[英]Prevent user from calling clearInterval manually

我有一個JavaScript間隔( setInterval )正在運行以進行倒計時。 要在特定時間停止此間隔,我使用clearInterval 當然,每個人都可以通過調用clearInterval函數輕松地清除此間隔。

所以我想知道,如何防止用戶手動停止計時器,但仍然可以自己停止計時器?

盡管可以捕獲變量,但可以將setInterval的返回值存儲在閉包中,以使其更難檢查用戶仍然可以:

  • 通過調試器訪問它
  • 猜值(只是一個整數)

因此,簡短的答案是您不能 最終,在用戶瀏覽器中發生的事情是在用戶的控制之下。

如果時間很重要,則以某種方式讓服務器參與其中。 (例如,通過要求服務器僅在一定時間后才會釋放的數據)。

您可以執行以下操作:

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

盡管這並不是防止調用clearInterval萬無一失的方法,但它為用戶手動調用clearInterval帶來了極大的障礙。

由於用戶完全控制瀏覽器,因此除了重寫瀏覽器的javascript引擎外,沒有其他簡便的方法可以做到這一點,當然,您不太可能這樣做。

我要說的是,您最多可以嘗試通過給它添加一些作用域來混淆setInterval。

例如,您可以在JS中創建一個對象,然后為該對象分配一個方法來啟動間隔。 人們仍然可以在控制台中清除Interval,但並非不知道間隔的范圍。

例如

myGlobalObject.intervalMethod.clearInterval(myInt);

這不是防彈的方法-因為編寫clearInterval還不夠,所以清除int有點困難-您需要知道范圍。 但是任何花時間在開發工具中閱讀您的JS的人都可以找到此代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM