我正在尝试开发类似Google Chrome的约会提醒扩展程序。 扩展名由一个浏览器动作组成,当点击该动作时,它会显示一个HTML页面,用户在其中输入约会的详细信息。 在约会开始时,警报应显示约会的名称。Chrome扩展脚本仅在弹出窗口显示时运行
只有当浏览器操作处于活动状态时,此扩展才能正常工作。如果浏览器操作被关闭,则警报不会在指定时间弹出。我不明白是什么导致了这个问题。
manifest.json的
{
"manifest_version": 2,
"name": "Appointment",
"description": "",
"version": "1.0",
"background": {
"scripts": [
"js/jquery.js",
"js/Utils.js",
"js/Controller.js"
]
},
"permissions": [
"storage",
"alarms",
],
"browser_action": {
"default_icon": "icon-appointment.png",
"default_popup": "popup.html"
}
}
Controller.js
function loadAppointments(allAppointmentsLoadedCallback){
chrome.storage.sync.get("test_appointments",function(items){
allAppointments = [];
if("test_appointments" in items){
sAllAppointments = items["test_appointments"];
allAppointments = JSON.parse(sAllAppointments);
}
allAppointmentsLoadedCallback(allAppointments);
});
}
function getAppointmentScheduledAt(aUnixTime,appointmentFoundCallback){
console.log('Finding Appointment for ',new Date(aUnixTime));
loadAppointments(function(allAppointments){
for(var i=0;i<allAppointments.length;i++){
var anAppointment = allAppointments[i];
var startTime = new Date(anAppointment.startTime).getTime();
console.log('Start time is ',startTime,' and alarm time is',aUnixTime);
if(startTime == aUnixTime){
appointmentFoundCallback(anAppointment);
return;
}
}
appointmentFoundCallback(null);
});
}
chrome.alarms.onAlarm.addListener(function(anAlarm){
getAppointmentScheduledAt(anAlarm.scheduledTime,function(appointment){
if(appointment){
console.log('Found one');
alert(appointment.title);
}else{
console.log('No appointment found.');
}
});
});
你能发布整个代码? – FuzzyAmi
我不想;但我认为有关部分在那里 –