Creates browser notifications for the Web-based Outlook-Calendar application. Useful in Linux (in Linux notifications do not work). Tested in Chrome 66.
// ==UserScript==
// @name Microsoft Calendar Notifications
// @namespace http://tampermonkey.net/
// @version 1.1
// @description Creates browser notifications for the Web-based Outlook-Calendar application. Useful in Linux (in Linux notifications do not work). Tested in Chrome 66.
// @author David López Castellote
// @match https://outlook.office.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
var allowNotification = true;
function notifyMe( event ) {
// Let's check if the browser supports notifications
if (!("Notification" in window)) {
alert("Este navegador no soporta notificaciones de escritorio.");
}
// Let's check whether notification permissions have already been granted
else if (Notification.permission === "granted") {
// If it's okay let's create a notification
createNotification( event );
}
// Otherwise, we need to ask the user for permission
else if (Notification.permission !== "denied") {
Notification.requestPermission(function(permission) {
// If the user accepts, let's create a notification
if (permission === "granted") {
createNotification( event );
}
});
}
}
function createNotification( event ) {
var title = "Calendar";
var options = {
body: event,
icon: 'https://raw.githubusercontent.com/Dellos7/nav-favicon/master/ms-calendar-favicon.ico',
requireInteraction: true
};
var notification = new Notification(title, options);
notification.onclick = function() {
window.focus();
};
}
function setTitleObserver() {
console.log('Activando notificaciones de Calendar...');
requestNotificationsPermission( function() {
console.log("DOM fully loaded and parsed");
setTimeout( function() {
console.log('CALENDAR TARGET');
var target = document.querySelector('.o365cs-notifications-notificationPopupArea');
console.log(target);
var observer = new window.WebKitMutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
console.log(mutation);
var target = mutation.target;
if (document.hidden && target.nodeName === 'DIV' && target.offsetParent.className === 'o365cs-notifications-notificationPopup ms-bcl-nl' && allowNotification) {
allowNotification = false;
console.log('NOTIFICATION: ' + target.innerText);
notifyMe( target.innerText );
setTimeout( function() {
allowNotification = true;
}, 1000 );
return false;
}
});
});
observer.observe(target, {
subtree: true,
characterData: true,
childList: true
});
}, 5000);
});
}
function requestNotificationsPermission( callback ) {
Notification.requestPermission().then(function(result) {
console.log('Permiso para notificaciones de Calendar: ' + result);
callback();
});
}
setTitleObserver();
})();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址