无法从Firefox插件的事件页面触发通知

问题描述

我在其他两个地方使用了相同的Notification,但它工作正常,为什么单击上下文菜单时为什么不触发?我尝试过.then-ing在browser.storage.sync.set(...之后,我也尝试过将它从browser.storage.onChanged ...方法中触发。为什么这个createNotification()方法起作用在弹出窗口和选项文件中,但不在后台脚本中?

let contextMenuItem = {
    id: "spendMoney",title: "SpendMoney",contexts: ["selection"]
}

browser.contextMenus.create(contextMenuItem)
const isInt = function (value) {
    return !isNaN(value) &&
        parseInt(Number(value)) == value &&
        !isNaN(parseInt(value,10));
}

browser.contextMenus.onClicked.addListener((clickData,tab) => {
    if (clickData.menuItemId == "spendMoney" && clickData.selectionText) {

        if (isInt(clickData.selectionText)) {
            browser.storage.sync.get(['total','limit'],function (budget) {

                let newTotal = 0;

                if (budget.total) {
                    newTotal += parseInt(budget.total);
                }

                newTotal += parseInt(clickData.selectionText);
                browser.storage.sync.set({
                    'total': newTotal
                })


            })
        }
    }

})

browser.storage.onChanged.addListener(function(changes,storageName) {
    browser.browserAction.setBadgeText({
        "text":changes.total.newValue.toString()
    });

})



let count = 0;

function createNotification(amount,newTotal,budget) {


    if (amount && newTotal >= budget.limit) {
        let notifOptions = {

            type: 'basic',title: 'limit reached!',message: `Oops... Looks like you've exceeded your limit! `
        };

        browser.notifications.create('limitNotif' + count,notifOptions)
        count += 1;
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...