溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JS怎么實現(xiàn)網頁搶購功能

發(fā)布時間:2021-04-21 10:43:03 來源:億速云 閱讀:420 作者:小新 欄目:web開發(fā)

小編給大家分享一下JS怎么實現(xiàn)網頁搶購功能,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

js有什么特點

1、js屬于一種解釋性腳本語言;2、在絕大多數(shù)瀏覽器的支持下,js可以在多種平臺下運行,擁有著跨平臺特性;3、js屬于一種弱類型腳本語言,對使用的數(shù)據類型未做出嚴格的要求,能夠進行類型轉換,簡單又容易上手;4、js語言安全性高,只能通過瀏覽器實現(xiàn)信息瀏覽或動態(tài)交互,從而有效地防止數(shù)據的丟失;5、基于對象的腳本語言,js不僅可以創(chuàng)建對象,也能使用現(xiàn)有的對象。

涉及到的內容:

1.chrome瀏覽器
2.js代碼
3.函數(shù)節(jié)流

第一步

打開chrome瀏覽器,使用組合鍵Ctrl+shift+i打開開發(fā)者工具,接下來如圖所示。JS怎么實現(xiàn)網頁搶購功能

點擊snippets

第二步

如圖所示

JS怎么實現(xiàn)網頁搶購功能

點擊new snippet -->輸入腳本‘名稱'-->Ctrl+s保存。

第三步

如圖所示

JS怎么實現(xiàn)網頁搶購功能

選擇新創(chuàng)建的腳本‘名稱',在如圖所示的第二步進行編輯js代碼。最后如第三步所示:run 運行代碼。

js腳本代碼

1.以下是網站上的代碼:

<body>
    <div class="box">
      <img class="img" src="image/pict.png" />
      <button class="btn" id='btn'>搶購</button>
    </div>
    <script type="text/javascript">
      /**
       * 搶購按鈕
       * 
       * */
      btn.onclick=function(){
        console.log('搶購成功!');
      };
    </script>
  </body>

每次點擊搶購 控制臺輸出 搶購成功!

2.腳本代碼

/**
* 最簡單的腳本代碼
* 版本1.0.1
*/
btn.click();//觸發(fā)按鈕執(zhí)行click事件

/**
 * 使用for循環(huán)執(zhí)行搶購的腳本代碼
 * 版本1.0.2
 * */
for(var i=0;i<100;i++){
  btn.click();
}

通過上邊的腳本js代碼可以知道,我們可以在chrome瀏覽器內置腳本,并控制執(zhí)行。

JS怎么實現(xiàn)網頁搶購功能

當開發(fā)人員模擬真實環(huán)境的高并發(fā)情況,咱們就可以使用這種腳本的方式模擬測試。通過剛剛的腳本我們發(fā)現(xiàn)我們開發(fā)的頁面中的js是有很多問題的。假設【搶購按鈕】觸發(fā)的是請求數(shù)據接口。則會出現(xiàn)在一個時間內發(fā)出n個請求。處理這個問題可以參考防止重復提交

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>防止ajax重復提交</title>
  </head>
  <body>
    <button id="btn">提交</button>
    <script>

      /**
       * 模擬ajax提交
       * @fn 回調函數(shù)
       * */
      function Ajax(fn){
        setTimeout(function(){
          var data= {result:true,msg:'提交成功!'};
          fn(data);
        },2000);
      }
      /**
       * btn click 提交事件
       * 
       * */
      btn.onclick=function(){
        //檢查 按鈕是否被鎖住,鎖住直接rerun
        if(btn.getAttribute('lock')){
          return;
        }
        //上鎖
        btn.setAttribute('lock',1);
        //更改狀態(tài)
        btn.innerText='提交中...';
        //模擬ajax提交
        Ajax(function(data){
          //請求成功
          if(data.result){
            console.log('請求成功');
            //請求成功解鎖
            btn.setAttribute('lock',"");
            //還原狀態(tài)
            btn.innerText='提交';
          }else{
            console.log('請求失敗');
            //請求失敗解鎖
            btn.setAttribute('lock',"");
            //還原狀態(tài)
            btn.innerText='提交';
          }
        });
      }
    </script>
  </body>
</html>

作者:java-script
鏈接:https://juejin.im/post/59bf6b6ff265da064261ba47
來源:掘金
著作權歸作者所有。商業(yè)轉載請聯(lián)系作者獲得授權,非商業(yè)轉載請注明出處。

也可以使用函數(shù)節(jié)流方式處理。如下代碼:

//網站上寫的代碼
/**
 * 搶購按鈕
 * 
 * */
btn.onclick=function(){
   throttle(function(){
    console.log('搶購成功!');
  },500);
};
/**
 * 函數(shù)節(jié)流
 * @fn {function} 回調函數(shù)
 * @time {number} 時間,毫秒
 * 
 * */
function throttle(fn,time){
  if(throttle.id){
    clearTimeout(throttle.id);
  };
  throttle.id=setTimeout(function(){
    fn();
  },time||200);
}

通過以上方式我們可以過濾掉惡意循環(huán)觸發(fā)事件。這種函數(shù)節(jié)流方式也得到大家的一致認可與推廣。

看完了這篇文章,相信你對“JS怎么實現(xiàn)網頁搶購功能”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI