JS實現(xiàn)網(wǎng)頁搶購功能(觸發(fā),終止腳本)
以下我們是通過chrome瀏覽器的開發(fā)者功能,實現(xiàn)如何用JS代碼完成搶購功能以及如何通過chrome瀏覽器調(diào)試并加載自己寫的JS。
身為一名前端開發(fā)工程師,有時候業(yè)務(wù)場景是無法用手速模擬的,老司機(jī)也有翻車的時候【你懂得】。因此我特意寫這一篇文章,希望能夠?qū)Υ蠹矣兴鶐椭?/p>
涉及到的內(nèi)容:
1.chrome瀏覽器
2.js代碼
3.函數(shù)節(jié)流
第一步
打開chrome瀏覽器,使用組合鍵Ctrl+shift+i打開開發(fā)者工具,接下來如圖所示。
點擊snippets
第二步
如圖所示

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

選擇新創(chuàng)建的腳本‘名稱',在如圖所示的第二步進(jìn)行編輯js代碼。最后如第三步所示:run 運(yùn)行代碼。
js腳本代碼
1.以下是網(wǎng)站上的代碼:
<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瀏覽器內(nèi)置腳本,并控制執(zhí)行。

當(dāng)開發(fā)人員模擬真實環(huán)境的高并發(fā)情況,咱們就可以使用這種腳本的方式模擬測試。通過剛剛的腳本我們發(fā)現(xiàn)我們開發(fā)的頁面中的js是有很多問題的。假設(shè)【搶購按鈕】觸發(fā)的是請求數(shù)據(jù)接口。則會出現(xiàn)在一個時間內(nèi)發(fā)出n個請求。處理這個問題可以參考防止重復(fù)提交
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>防止ajax重復(fù)提交</title>
</head>
<body>
<button id="btn">提交</button>
<script>
/**
* 模擬ajax提交
* @fn 回調(diào)函數(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
來源:掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
也可以使用函數(shù)節(jié)流方式處理。如下代碼:
//網(wǎng)站上寫的代碼
/**
* 搶購按鈕
*
* */
btn.onclick=function(){
throttle(function(){
console.log('搶購成功!');
},500);
};
/**
* 函數(shù)節(jié)流
* @fn {function} 回調(diào)函數(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é)流方式也得到大家的一致認(rèn)可與推廣。
總結(jié)通過上述方式,我們不僅學(xué)會了制做簡單的js腳本,也學(xué)到一種簡單的阻止js腳本的方法。想要真正的寫一些有用的js腳本還需要你們自己努力哦!想要正在屏蔽掉惡意的js腳本,單純的使用前端技術(shù)其實是有很大的難度!特此獻(xiàn)給那些正在努力學(xué)習(xí)前端并想在前端的道路上越走越遠(yuǎn)的童鞋們。祝福你們。
相關(guān)文章
JS表單數(shù)據(jù)驗證的正則表達(dá)式(常用)
這篇文章主要介紹了JS表單數(shù)據(jù)驗證的正則表達(dá)式,這種方法比較常用,以及使用正則表達(dá)式驗證表單的方法,本文給大家介紹非常詳細(xì),需要的的朋友參考下2017-02-02
基于javascript實現(xiàn)最簡單的選項卡切換效果
這篇文章主要介紹了基于javascript實現(xiàn)最簡單的選項卡切換效果的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-05-05
uniapp自定義頁面跳轉(zhuǎn)loading的實現(xiàn)代碼
有些頁面加載起來比較慢,為了加強(qiáng)用戶體驗效果,所以一般都會做一個頁面加載等待的提示,頁面加載完成后消失,下面這篇文章主要給大家介紹了關(guān)于uniapp自定義頁面跳轉(zhuǎn)loading的實現(xiàn)代碼,需要的朋友可以參考下2023-06-06
JS+flash實現(xiàn)chrome和ie瀏覽器下同時可以復(fù)制粘貼
chrome和ie同時可以復(fù)制粘貼,想必大家一直思索的問題在本文將有一個不錯的實現(xiàn),下面為大家介紹下JS+flash是如何實現(xiàn)的,感興趣的朋友可以參考下2013-09-09

