打开一个URL在特定的时间与Chrome扩展
Open a URL at a specific time with a Chrome Extension
我有一个Chrome扩展,我用它在凌晨在一个网站上运行一些批处理作业。我已经有一个内容脚本,当这个URL在Chrome中调用并完成所有必要的工作时运行。我现在有一个问题,找出最好的方法来串这个调度程序,所以这个URL在一个Chrome标签自动打开在凌晨3点。我在专用的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非常适合您的用例,可以在事件页面中使用。
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 });
}
});
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- 扩展移相器按钮类不工作
- chrome扩展中的navigator.geolocation.getCurrentPosition
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- Java脚本时间添加
- chrome扩展更改主机/域警告
- Chrome 扩展程序弹出窗口关闭在错误的时间触发
- 如何在固定时间间隔内实现 chrome 扩展弹出桌面通知
- Chrome扩展程序每隔一段时间检查来自服务器的数据
- 如何在RxJS中实现时间到期热可观察(或在反应式扩展中通用)
- 从hh:mm:yy(24小时)到扩展时间形式的时间转换
- 扩展时钟组件的角度指令以单独显示日期时间元素
- Fire Key事件从chrome扩展:Uncaught TypeError:不能读取属性'时间'的定义
- Jquery扩展和滚动在同一时间
- Chrome扩展-变量值不分配取决于间隔持续时间
- Chrome扩展:在特定的时间重定向
- 打开一个URL在特定的时间与Chrome扩展
- 使用XMLHttpRequest读取数据后一段时间- Chrome扩展
- chrome扩展-在使用内容脚本时减少加载时间的最佳方法
- Chrome扩展DOM操纵不工作所有的时间