Javascript Chrome扩展脚本仅在显示弹出窗口时运行
我正在尝试为谷歌Chrome开发类似于约会提醒扩展的东西。 扩展包括一个浏览器操作,单击该操作时,将显示一个HTML页面,用户可在其中输入约会的详细信息。 约会开始时,应显示约会名称的警报 此扩展不起作用,但仅当浏览器操作处于活动状态时才起作用。如果关闭浏览器操作,则不会在指定时间弹出警报。我不明白是什么导致了这个问题 Manifest.jsonJavascript Chrome扩展脚本仅在显示弹出窗口时运行,javascript,jquery,google-chrome,google-chrome-extension,Javascript,Jquery,Google Chrome,Google Chrome Extension,我正在尝试为谷歌Chrome开发类似于约会提醒扩展的东西。 扩展包括一个浏览器操作,单击该操作时,将显示一个HTML页面,用户可在其中输入约会的详细信息。 约会开始时,应显示约会名称的警报 此扩展不起作用,但仅当浏览器操作处于活动状态时才起作用。如果关闭浏览器操作,则不会在指定时间弹出警报。我不明白是什么导致了这个问题 Manifest.json { "manifest_version": 2, "name": "Appointment", "description":
{
"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.');
}
});
});
函数加载约会(AllAppPointmentsLoadedCallback){
chrome.storage.sync.get(“测试预约”,函数(项目){
所有药点=[];
if(项目中的“测试预约”){
SALLAppointment=项目[“测试预约”];
allappoints=JSON.parse(sallappoints);
}
Allappoints SloadedCallback(Allappoints);
});
}
函数getAppointmentScheduledAt(aUnixTime,appointmentFoundCallback){
log('查找约会',新日期(aUnixTime));
加载预约(功能(所有预约){
对于(var i=0;i我假设您正在弹出页面中调用chrome.alarms.create
。这将向弹出页面的defaultView
(窗口
)注册一个报警。当弹出关闭时,该报警将被销毁
您需要将警报注册到后台页面的视图中:
chrome.runtime.getBackgroundPage(function(bg) {
bg.chrome.alarms.create( ... );
});
你能发布整个代码吗?我不想发布,但我想相关的部分在那里