我正在嘗試開發類似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
我不想;但我認爲有關部分在那裏 –