Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome扩展脚本仅在显示弹出窗口时运行_Javascript_Jquery_Google Chrome_Google Chrome Extension - Fatal编程技术网

Javascript Chrome扩展脚本仅在显示弹出窗口时运行

Javascript 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":

我正在尝试为谷歌Chrome开发类似于约会提醒扩展的东西。 扩展包括一个浏览器操作,单击该操作时,将显示一个HTML页面,用户可在其中输入约会的详细信息。 约会开始时,应显示约会名称的警报

此扩展不起作用,但仅当浏览器操作处于活动状态时才起作用。如果关闭浏览器操作,则不会在指定时间弹出警报。我不明白是什么导致了这个问题

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.');
        }
    });
});
函数加载约会(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( ... );
});

你能发布整个代码吗?我不想发布,但我想相关的部分在那里