猿问

如何仅在时钟到达特定时间时运行 Chrome 扩展

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();

    }

}

这是我的 JavaScript 代码,它的作用就是在正确的时间到来时打开谷歌并加入我的在线课程。如果这一行有一个小问题


(time == timeToJoin) {

    joinClass();

}

这里发生的情况是我给出的条件是true一分钟,因此机器人不断尝试加入课程一分钟,它打开链接,然后再次打开相同的链接,直到条件变为假。


我尽了最大努力来解决这个问题,但不知道为什么它们都不起作用。


白衣染霜花
浏览 97回答 1
1回答

蝴蝶刀刀

由于脚本每次都从头开始,因此您需要保留视频类是否在上次运行中加入。您可以使用 Chrome 的存储 API来实现这一点。文档解释道:您必须在扩展清单中声明“存储”权限才能使用存储 API。例如:  {    "name": "My extension",    ...    "permissions": [      "storage"    ],    ...  }要存储扩展程序的用户数据,您可以使用以下任一storage.sync[...] storage.local:  chrome.storage.sync.set({key: value}, function() {    console.log('Value is set to ' + value);  });  chrome.storage.sync.get(['key'], function(result) {    console.log('Value currently is ' + result.key);  });因此,一旦您调整了清单,请更改代码的以下部分:if (time == timeToJoin) {    joinClass();}...对此:chrome.storage.sync.get({ classStarted: false }, function({classStarted}) {   if ((time === timeToJoin) === classStarted) return; // nothing to do   if (!classStarted) {     // Persist the fact that we start the class, and call joinClass once it is persisted     chrome.storage.sync.set({ classStarted: true }, joinClass);    } else {      // At least one minute elapsed, so we can clean up the persisted value now...     chrome.storage.sync.remove("classStarted");    }});
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答