gpt4 book ai didi

javascript - 使用 Chrome 扩展程序在特定时间打开 URL

转载 作者:行者123 更新时间:2023-12-04 14:46:37 25 4
gpt4 key购买 nike

我有一个 Chrome 扩展程序,用于在凌晨在网站上运行一些批处理作业。当在 Chrome 中调用此 URL 并完成所有必要的工作时,我已经有一个内容脚本可以运行。我现在遇到了一个问题,我想找出将它串到调度程序的最佳方法,以便这个 URL 在凌晨 3:00 在 Chrome 选项卡中自动打开。我在专用的 Azure 虚拟机中运行所有这些代码,因此当脚本设置为运行时不会有任何用户登录。当新标签完成它的工作时,它会自动关闭,我已经处理过了。

到目前为止,我已经尝试使用 Windows 任务计划程序打开 Chrome,并将 URL 作为参数传入。然而,这种方法被证明有些不可靠!

如果我在虚拟机上打开 Chrome,是否有任何原生 Chrome API 可用于在特定时间打开带有 URL 的选项卡?我还在一个单独的页面中使用了以下 javascript 函数来触发 URL 打开,但是我没有机制来测试它是否已经在另一个选项卡中运行,所以这段代码会导致无限的新选项卡被打开,除非它可能是适合检查 URL 是否已经打开,我认为这将超出 Javascript 本身的范围。

var myUrlToCall = "http://www.myspecialurl.com/runme.html";

//IS 3 AM YET?
function runTimer() {
setTimeout(function () {
var dtNow = new Date();
var hoursNow = dtNow.getHours() * 1;
if (hoursNow >= 3) {
//Open new window here (but how can I know if it's already open?)
window.open(myUrlToCall);
} else {
runTimer();
}
}, 3000);
}

对此的任何想法将不胜感激。

最佳答案

chrome.alarms API 非常适合您的用例,可用于 event page .

function createAlarm() {
var now = new Date();
var day = now.getDate();
if (now.getHours() >= 3) {
// 3 AM already passed
day += 1;
}
// '+' casts the date to a number, like [object Date].getTime();
var timestamp = +new Date(now.getFullYear(), now.getMonth(), day, 3, 0, 0, 0);
// YYYY MM DD HH MM SS MS

// Create
chrome.alarms.create('3AMyet', {
when: timestamp
});
}

// Listen
chrome.alarms.onAlarm.addListener(function(alarm) {
if (alarm.name === '3AMyet') {
// Whatever you want
}
});
createAlarm();
关于创建选项卡: chrome.tabs.query 方法可用于检查选项卡是否存在,并在必要时打开一个新选项卡。我假设您希望在需要时关注现有选项卡:
var url = '...';
chrome.tabs.query({
url: url
}, function(tabs) {
if (tabs.length === 0) {
chrome.tabs.create({ url:url, active: true });
} else {
// Focus first match
chrome.tabs.update(tabs[0].id, { active: true });
}
});

关于javascript - 使用 Chrome 扩展程序在特定时间打开 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16583574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com