假设:
my website.
如果没有后台服务器推送通知,如何触发桌面通知?这个是可能的吗?
如果提供了超时/间隔,并且web-alarm/task-scheduler specification尚未准备好使用,则浏览器将关闭服务工作器。有没有一种只有客户端的方法来在将来的某个指定时间触发通知?
有没有严格意义上不是“推送通知”的桌面通知?推送通知本质上是从服务器推送的。可以从客户端触发通知吗?
发布于 2018-12-30 03:04:11
您可以考虑使用localStorage。但是,这仅适用于使用相同设备和浏览器的用户。
下面是一个在页面加载时启动的函数。如果您希望它在整个会话中周期性地发生,您可以将它包装到一个setInterval中并定期检查。这是假设它需要精确到24小时后的毫秒。
// on page load
window.onload = () => {
const dayMs = 24*60*60*1000; // 1 day in milliseconds
const notificationTimer = localStorage.getItem('notificationTimer');
if(notificationTimer){
const sendNotification = (Date.now() - (new Date(notificationTimer)).getTime()) > dayMs;
if(sendNotification){
const notification = new Notification('Displaying next day reminder from yesterday');
}
}
};当用户选择第二天提醒时,您可以设置notificationTimer
localStorage.setItem(notificationTimer, Date.now());你必须对第二天的提醒做出一些警告,它不能跨浏览器或设备工作,这可能是也可能是不可取的。
发布于 2019-01-03 03:02:33
假设您网站上的通知数据不是从服务器发送的。使用本地存储将是一条可行的道路。
您可以存储一个变量来帮助跟踪用户每次访问您的网站时显示通知的时间:
localStorage.setItem("lastNotification", Date.now());因此,您可以使用一个脚本来执行以下操作;
function notificationHelper(){
var lastTime = localStorage.getItem("lastNotification");
if(Date.now - lastTime > 86400000){
//Logic to show notication here
//set a new time at the end of the logic
}
//Otherwise Do Nothing
}https://stackoverflow.com/questions/53803353
复制相似问题