未捕获(承诺)类型错误:尝试打开窗口时出现问题

Posted

技术标签:

【中文标题】未捕获(承诺)类型错误:尝试打开窗口时出现问题【英文标题】:Uncaught (in promise) TypeError: Something went wrong while trying to open the window 【发布时间】:2018-01-15 15:41:54 【问题描述】:

我在点击网络推送通知时尝试打开新链接时遇到上述错误。

我的代码工作正常,我的意思是我可以在单击通知后打开链接,但在控制台中收到此错误,当我输入任何硬编码的 url 时,它在控制台中显示没有错误。

任何帮助将不胜感激。

这是我的 service-worker.js 代码

var link;
try
self.addEventListener('push', function(e) 
    var data = e.data.json();
    var title = data.title;

        var options = 
            body: data.body
        ;
        if(data.link)
            link = data.link;
        

        if(data.badge)
            options.badge = data.badge;
        

        if(data.icon)
            options.icon = data.icon;
        

        if(data.image)
            options.image = data.image;
        

        e.waitUntil(self.registration.showNotification(title, options));

 );

  catch(error)
  console.log('error while sending push notification');

 self.addEventListener('notificationclick', function(event) 

 event.notification.close();
 event.waitUntil(clients.openWindow(link));
);

【问题讨论】:

你能提供一个工作小提琴吗?调试起来会更容易 我正在做服务器调用等等,所以很难提供。一切都按预期工作,但在这一行出现控制台错误event.waitUntil(clients.openWindow(link)); 【参考方案1】:

在尝试对网络推送通知实施点击操作时遇到了这个问题。使用preventDefault() 解决了它;

https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault

【讨论】:

以上是关于未捕获(承诺)类型错误:尝试打开窗口时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的类型错误:无法读取未定义的属性“ui”。选择croparea时出现JQuery JCrop问题

解决一堆承诺时出现 Firebase 错误:无法将未定义或 null 转换为对象

未捕获(承诺)错误:“设备”插件未在 android 上实现

未捕获(承诺中)类型错误:无法读取未定义的属性“协议”

尝试构建钢筋时出现“未捕获的 rebar_core 错误”

第二次调用函数绘制图表时出现Amcharts5错误