退出Firefox时警报是否仍然存在?

问题描述 投票:0回答:1

如果Firefox附加扩展程序使用browser.alarms.create设置警报然后用户退出Firefox,则下次打开Firefox时警报是否仍然存在?

如果是这样,如果超过延迟,是否会立即触发使用delayInMinutes创建的警报?

如果是这样,使用periodInMinutes创建的警报是否会继续根据浏览器退出之前的初始触发时间或浏览器打开时间触发?

javascript firefox-addon firefox-webextensions
1个回答
0
投票

警报不会在浏览器会话中持续存在。

签名和安装下面的代码(当浏览器退出时临时加载的扩展名被卸载)将输出:

Extension running. Current alarms:
Array []
background.js:4:13
2019-03-16T17:15:10.841Z: Alarm should go off every minute. background.js:13:13
2019-03-16T17:16:10.912Z: test-alarm-1 background.js:16:17
2019-03-16T17:17:10.919Z: test-alarm-1 background.js:16:17
2019-03-16T17:18:10.922Z: test-alarm-1 background.js:16:17

​// Restart Firefox, reopen debugging.

Extension running. Current alarms: 
Array []
background.js:4:13
2019-03-16T17:18:40.689Z: Alarm should go off every minute. background.js:13:13
2019-03-16T17:19:40.796Z: test-alarm-1 background.js:16:17

如果警报持续存在,则阵列将有1个项目。

manifest.json的:

{
    "manifest_version": 2,
    "name": "Test WebExtension",
    "author": "Jeremiah Lee",
    "developer": {
        "name": "Jeremiah Lee",
        "url": "https://www.jeremiahlee.com/"
    },
    "version": "0.1.0",
    "description": "Better documentation is needed",
    "homepage_url": "https://stackoverflow.com/questions/55173095/do-alarms-persist-when-quitting-firefox",
    "permissions": [
        "<all_urls>",
        "alarms",
        "tabs"
    ],
    "background": {
        "page": "./lib/background.html"
    }
}

background.html:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<script type="module" src="./background.js"></script>
</head>
</html>

background.js:

(async function() {
    const alarms = await browser.alarms.getAll();

    console.log(`Extension running. Current alarms:`, alarms);

    await browser.alarms.create(
        "test-alarm-1",
        {
            periodInMinutes: 1
        }
    );

    console.log(`${new Date().toISOString()}: Alarm should go off every minute.`);

    function handleAlarm(alarmInfo) {
        console.log(`${new Date().toISOString()}: ${alarmInfo.name}`);
    }

    browser.alarms.onAlarm.addListener(handleAlarm)
})();

© www.soinside.com 2019 - 2024. All rights reserved.