循环通知不出现

时间:2018-09-02 04:15:19

标签: javascript google-chrome-extension

我已经建立了一系列的循环生成链接,这些链接应该以通知的形式显示自定义消息。

显示通知的功能在我的后台事件页面(eventPage.js)中:

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){
    if (request.todo == "notification"){
        var notifOptions = {
            type: 'basic',
            iconUrl: 'icon48.png',
            title: request.ttl,
            message: request.msg
        };
        chrome.notifications.create('notti', notifOptions);
    }
});

同时,在内容页面(content.js)上,有两个条件链接到此函数:


第一:

if (request.todo == "full"){
        chrome.runtime.sendMessage({todo: "notification", ttl: 'Title', msg: 'Test!'});
    }

此第一个功能有效,并且通知显示没有任何问题(因此,权限没有问题等)。


第二种情况是无效的:

 if(request.todo == "quick"){
        for (let i = 0; i < wrds.length; i++) {
            var entry = "#"+wrds[i];
            if ($(entry).length) {
                $(entry).on("click", function() {
                    var msg = prns[i]+'\n'+defs[i];
                    chrome.runtime.sendMessage({todo: "notification", ttl: 'Title', msg: msg});
                    alert(msg);
                }); 
            }
        }}

此条件尝试在for循环中设置一系列通知。事实是,尽管警报运行良好,但通知根本没有出现。

如何显示for循环生成的通知?

1 个答案:

答案 0 :(得分:0)

for循环版本不起作用,因为通知标题必须唯一。

为了使其能够始终显示该通知,无论该通知是否曾出现过,都需要使用唯一名称进行创建。

为了解决这个问题,我决定将名称设为唯一的时间戳。

import numpy as np
from netCDF4 import Dataset
import rasterio


with rasterio.drivers():
    src=rasterio.open(r"ia.tiff","r")
    dst_transform=src.transform
    dst_width=src.width
    dst_height=src.height
    print (dst_transform)
    xmin = dst_transform[0]
    xmax = dst_transform[0] + dst_transform[1]*dst_width
    print (xmax)
    min = dst_transform[3] + dst_transform[5]*dst_height
    print(ymin)
    ymax = dst_transform[3]

    dst_width=dst_width+1
    dst_height=dst_height+1
    outf=Dataset(r'ia.nc','w',format='NETCDF4_CLASSIC')
    lats=np.linspace(ymin,ymax,dst_width)
    lons=np.linspace(xmin,xmax,dst_height)


    lat=outf.createDimension('lon',len(lats))
    lon=outf.createDimension('lat',len(lons))
    longitude=outf.createVariable('longitude',np.float64,('lon',))
    latitude=outf.createVariable('latitude',np.float64,('lat',))
    SHIA=outf.createVariable('SHIA',np.int8,('lon','lat'))

    outf.variables['longitude'][:]=lons
    outf.varibales['longitude'][:]=lat
    im=src.read()
    SHIA[:,:]=im

    outf.description="IA for"
    longitude.units="degrees east"
    latitude.units='degrees north'

    print ("created empty array")

    outf.close()




outf.close()

for (let i = 0; i < wrds.length; i++) {
            var entry = "#"+wrds[i];
            if ($(entry).length) {
                $(entry).on("click", function() {
                    var timestamp = String(new Date().getTime());
                    var msg = prns[i]+'\n'+defs[i];
                    chrome.runtime.sendMessage({todo: "notification", ttl: wrds[i], msg: msg, stamp:timestamp});
                }); 
            }
        }