小編給大家分享一下JS怎么實現網頁搶購功能,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
1、js屬于一種解釋性腳本語言;2、在絕大多數瀏覽器的支持下,js可以在多種平臺下運行,擁有著跨平臺特性;3、js屬于一種弱類型腳本語言,對使用的數據類型未做出嚴格的要求,能夠進行類型轉換,簡單又容易上手;4、js語言安全性高,只能通過瀏覽器實現信息瀏覽或動態交互,從而有效地防止數據的丟失;5、基于對象的腳本語言,js不僅可以創建對象,也能使用現有的對象。
涉及到的內容:
1.chrome瀏覽器
2.js代碼
3.函數節流
第一步
打開chrome瀏覽器,使用組合鍵Ctrl+shift+i打開開發者工具,接下來如圖所示。
點擊snippets
第二步
如圖所示

點擊new snippet -->輸入腳本‘名稱'-->Ctrl+s保存。
第三步
如圖所示

選擇新創建的腳本‘名稱',在如圖所示的第二步進行編輯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();//觸發按鈕執行click事件
/**
* 使用for循環執行搶購的腳本代碼
* 版本1.0.2
* */
for(var i=0;i<100;i++){
btn.click();
}通過上邊的腳本js代碼可以知道,我們可以在chrome瀏覽器內置腳本,并控制執行。

當開發人員模擬真實環境的高并發情況,咱們就可以使用這種腳本的方式模擬測試。通過剛剛的腳本我們發現我們開發的頁面中的js是有很多問題的。假設【搶購按鈕】觸發的是請求數據接口。則會出現在一個時間內發出n個請求。處理這個問題可以參考防止重復提交
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>防止ajax重復提交</title>
</head>
<body>
<button id="btn">提交</button>
<script>
/**
* 模擬ajax提交
* @fn 回調函數
* */
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);
//更改狀態
btn.innerText='提交中...';
//模擬ajax提交
Ajax(function(data){
//請求成功
if(data.result){
console.log('請求成功');
//請求成功解鎖
btn.setAttribute('lock',"");
//還原狀態
btn.innerText='提交';
}else{
console.log('請求失敗');
//請求失敗解鎖
btn.setAttribute('lock',"");
//還原狀態
btn.innerText='提交';
}
});
}
</script>
</body>
</html>
作者:java-script
鏈接:https://juejin.im/post/59bf6b6ff265da064261ba47
來源:掘金
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。也可以使用函數節流方式處理。如下代碼:
//網站上寫的代碼
/**
* 搶購按鈕
*
* */
btn.onclick=function(){
throttle(function(){
console.log('搶購成功!');
},500);
};
/**
* 函數節流
* @fn {function} 回調函數
* @time {number} 時間,毫秒
*
* */
function throttle(fn,time){
if(throttle.id){
clearTimeout(throttle.id);
};
throttle.id=setTimeout(function(){
fn();
},time||200);
}通過以上方式我們可以過濾掉惡意循環觸發事件。這種函數節流方式也得到大家的一致認可與推廣。
看完了這篇文章,相信你對“JS怎么實現網頁搶購功能”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。