データベースから通知を取得するために、Web アプリで Webkit 通知スクリプトを作成しました。コードを以下に示します。
function checkNotifications() {
if (window.webkitNotifications.checkPermission() == 1) {
window.webkitNotifications.requestPermission();
}
else {
$.ajax({
type: "GET",
dataType: 'json',
url: '/check_notifications',
success: function(data){
if (data){
var ticketId = data.ticket_id;
console.log(data);
var comment = data.comment;
var createdDate = data.created_at;
var notificationComment = data.comment;
var notificationId = data.notifcation_id;
var notification = window.webkitNotifications.createNotification('/pt_logo_small.png', 'Project Ticket '+ticketId+ ' Updated!', 'Ticket has been updated. Click here to see!');
notification.show();
console.log(notificationId);
notification.onclick = function(){
this.close();
console.log("NOTIFICATION WAS CLICKED!")
$.ajax({
type: "GET",
dataType: 'json',
url: '/read_notifications/' + notificationId,
success: function(){
window.location = '/pto/' + ticketId;
},
error: function(){
window.location = '/pto/' + ticketId;
}
});
console.log(ticketId, comment, createdDate);
};
}
}
});
}
setTimeout(checkNotifications, 20000);
}
何らかの理由で。別のタブを選択するか、Web アプリケーション内の別のパスに移動すると、スクリプトが実行されて通知が表示されますが、.onclick
イベントはトリガーされません。
イベントがトリガーされない理由を知っている人はいますか?
Appleによるとonclick
、イベントを作成したページをフォーカスする必要があります。ただし、.onclick
関数内では何もトリガーされません。