[英]How can I fix my code to run only once in javascript
var timeToJoin = '18:13';
var today = new Date();
var time = today.getHours() + ":" + today.getMinutes();
var SST = 'https://meet.google.com/rnc-akmx-ubk';
if (time == timeToJoin) {
joinClass();
}
function joinClass() {
location.href = SST;
setTimeout(offMicVideo, 10000);
}
function offMicVideo() {
var video = document.getElementsByClassName('I5fjHe');
var mic = document.getElementsByClassName('oTVIqe');
for (var i = 0; i < video.length; i++) {
video[i].click();
}
for (var i = 0; i < mic.length; i++) {
mic[i].click();
}
}
這是一個在if (time == timeToJoin) {
自動加入會議的擴展但是你肯定注意到了這個中的一個小問題condition 它每秒嘗試加入會議,直到 if 條件匹配。
請給我一些解決方案,讓 function 在 if 語句中只運行一次。
這看起來就像使用另一種機制來確保 class 只加入一次一樣簡單。
我的建議是使用一個標志來表示這一點,如下所示:
// Declare hasJoined outside of your looped code
var hasJoined = false;
// Inside your looped code
...
var SST = 'https://meet.google.com/rnc-akmx-ubk';
if (!hasJoined && time == timeToJoin) {
hasJoined = true;
joinClass();
}
...
必須在監視時間的循環代碼之外聲明變量hasJoined
。 否則你會在每次循環運行時覆蓋結果。
這只需在嘗試加入 class 之前檢查hasJoined
是否為 false 即可。如果hasJoined
尚未設置並且是時候加入 class, hasJoined
將被設置並且joinClass()
function 將執行。
將hasJoined
更改為 true 可防止多次嘗試加入 class。
嘗試將您的if
語句放在 1 分鍾的時間間隔內,這樣它只會在 1 分鍾間隔后檢查您的條件,並且還會減少不必要的代碼執行。
考慮到會議允許遲到1分鍾的情況:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.