You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript通知无法显示Action按钮,求排查JSON处理问题

问题排查与解决

核心问题:Actions数组构建错误

你代码里构建通知actions的方式完全错误——你把y初始化为空字符串,然后通过+=拼接对象,这会把每个对象强制转为"[object Object]"类的无效字符串,最终actions: [y]变成了包含乱码字符串的数组,而非Notification API要求的对象数组,这直接导致Action按钮无法被识别。

修正步骤

  1. 将y从字符串改为数组,用来存储每个action对象
  2. 在forEach循环中,向数组push符合格式的action对象(注意不要给action和title的值加多余引号)
  3. 直接将数组赋值给actions属性,不需要额外包裹成[y](因为y本身就是数组)

修正后的JavaScript关键代码片段

e.onmessage = m => {
    p = j(m.data);
    Notification.requestPermission().then(n => ng.serviceWorker.register('sw.js').then(w => {
        // 把y改成数组
        let y = [];
        (p.a).forEach(b => {
            // 向数组push正确格式的action对象
            y.push({
                "action": b,
                "title": b
            });
        });
        let arg = {
            body: p.y,
            icon: p.z,
            badge: p.z,
            actions: y // 直接使用数组
        };
        w.showNotification(p.x, arg);
        o(1);
    }))
}

额外检查点

  • 确保sw.js文件存在且配置正确,因为showNotification是通过Service Worker调用的
  • 确认浏览器支持Notification的actions属性(主流Chrome/Firefox/Edge均支持,Safari需注意版本兼容性)
  • 检查Notification权限是否已授予(Notification.requestPermission()需返回granted)

内容的提问来源于stack exchange,提问作者HEMANTH ABHIRAM SOMARAJU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 01:20:19