我正在尝试向Chrome扩展程序添加一些代码,这将在一天的特定时间刷新特定页面。我发现编码涉及向标题添加元标记,或标记到正文但我无法编辑页面的html,所以这是不可能的。这是我现在的代码,但似乎没有工作 -
//60000 milliseconds is 1 minute
window.setInterval("checkForRefresh()", 60000);
function checkForRefresh() {
var now = new Date();
if (now.getHours() == 14 && now.getMinutes() == 24) {
window.location.reload();
}
}
它似乎已经工作了几次,但现在它停止了工作。不确定出了什么问题。
有关如何解决此问题的任何想法?
答案 0 :(得分:3)
答案 1 :(得分:1)
window.refresh()
不是一个功能。请改为window.location.reload()
。
答案 2 :(得分:0)
要获得更可靠,更资源友好的解决方案,您可以在非持久性背景页面(又名 chrome.alarms
API )中使用 event page 。 E.g:
在 manifest.json :
{
"manifest_version": 2,
"name": "Test Extension",
"version": "0.0",
"offline_enabled": false,
"background": {
"persistent": false,
"scripts": ["background.js"]
},
"permissions": [
"alarms",
"tabs"
]
}
在 background.js :
var refreshAlarmName = 'refreshAlarm';
/* Refresh at: 10 Dec 2013, 22:11:00 UTC */
var utcYear = 2013;
var utcMonth = 11; // <-- watch out: this is zero-based
var utcDate = 10;
var utcHours = 22;
var utcMinutes = 11;
/* Convert a date (year, month, dayOfMonth, hours, mins)
* to milliseconds past the epoch */
function at(year, month, dayOfMonth, hours, mins) {
var date = new Date();
date.setUTCFullYear(year);
date.setUTCMonth(month);
date.setUTCDate(dayOfMonth);
date.setUTCHours(hours);
date.setUTCMinutes(mins);
date.setUTCSeconds(0);
date.setUTCMilliseconds(0);
return date.getTime();
}
chrome.alarms.create(refreshAlarmName, {
when: at(utcYear, utcMonth, utcDate, utcHours, utcMinutes)
});
chrome.alarms.onAlarm.addListener(function(alarm) {
if (alarm.name !== refreshAlarmName) {
return;
}
chrome.tabs.query({ url: "*://www.eastbay.com/*" }, function(tabs) {
tabs.forEach(function(tab) {
chrome.tabs.reload(tab.id, { bypassCache: true });
});
});
});
根据文件:
出于性能原因,警报可能会延迟超出此范围的任意数量。
根据我的经验,任意数量几乎不可忽视,但如果准确时间至关重要,您可能需要考虑更复杂的机制,其中背景页面触发在目标时间前几分钟发出一个警报,它会注入一个内容脚本,设置一个30秒的间隔来检查目标时间并刷新。