6

我希望能够为每个通知设置一个链接/永久链接,所以当用户点击它时;然后他被带到固定链接位置,

我已经看到了这个答案,它的解决方案有点不同,因为使用了静态链接,

我想以某种方式:

var noti = window.webkitNotifications.createNotification(
     'http://funcook.com/img/favicon.png', 
     'HTML5 Notification', 
     'HTML5 Notification content...',
     'http://mycustom.dynamic.link.com/'    /* invented code */
)
noti.onclose = function(){ alert(':(') };
noti.onclick = function(){ 
    window.location.href = $(this).url; /* invented code */
};
noti.show();

任何机会?(我真的不喜欢静态 html 文件解决方案...我想保留这种语法)

4

5 回答 5

9

这样的事情怎么样?

var createNotificationWithLink = function(image, title, content, link) {
    var notification = window.webkitNotifications.createNotification(image, title, content);

    notification.onclose = function() {
        alert(':(');
    };

    notification.onclick = function() { 
        window.location.href = link;
    };

    return notification;
};

现在,您可以createNotificationWithLink在想要创建通知时调用:

var noti = createNotificationWithLink(
    'http://funcook.com/img/favicon.png',
    'HTML5 Notification',
    'HTML5 Notification content...',
    'http://mycustom.dynamic.link.com/'
);

noti.show();

如果您喜欢 ( ) ,您也可以noti.show();进入该功能。我不知道您是否希望在创建通知时自动显示通知...createNotificationWithLinknotification.show();

于 2013-09-11T20:25:01.680 回答
5

您可以将data可以从onclick事件处理程序中读取的属性作为e.target.data.

var notification = new window.Notification("Hello!",
{
    body: "Hello world!",
    data: "https://www.example.com/?id=" + 123
});

notification.onclick = function(e) {
    window.location.href = e.target.data;
}
于 2015-06-08T14:38:51.397 回答
2
noti.onclick = function() {
    window.open("http://www.stackoverflow.com")
};

更多关于如何使用window.open:http://www.w3schools.com/jsref/met_win_open.asp4

HTML5 通知资源:http ://www.html5rocks.com/en/tutorials/notifications/quick/ (如果这不能回答您的问题)

对于您可以拥有的每一个:

var noti1 = window.webkitNotifications.createNotification(
     'http://funcook.com/img/favicon.png', 
     'HTML5 Notification', 
     'HTML5 Notification content...',

var noti2 = window.webkitNotifications.createNotification(
     'http://funcook.com/img/favicon.png', 
     'HTML5 Notification #2', 
     'HTML5 Notification #2 content...',

ETC

接着

noti1.onclick = function() {
    window.open("http://www.stackoverflow.com")
};
noti2.onclick = function() {
    window.open("http://www.example.com")
};

希望有帮助:)

于 2013-09-10T13:11:38.780 回答
0

您可以将 url 作为属性添加到“noti”,然后使用this.yourpropertyname

例子:

noti.myurl = 'http://stackoverflow.com';

...

noti.onclick = function(){ 
    window.location.href = this.myurl;
};

希望这可以帮助。

于 2013-09-10T21:59:49.450 回答
0

对于需要打开新浏览器窗口(选项卡)但不希望父窗口(选项卡)被替换并专注于通知单击的任何人,此代码片段将起到作用:

 var notification = new window.Notification("Hello!", {
   body: "Hello world!",
   data: "https://www.google.com/"
 });

 notification.onclick = function(event) {
          event.preventDefault();  //prevent the browser from focusing the Notification's tab, while it stays also open        
          var new_window = window.open('','_blank'); //open empty window(tab)
          new_window.location = event.target.data; //set url of newly created window(tab) and focus

        };
于 2019-02-15T08:07:03.550 回答