Microsoft Calendar Notifications

Creates browser notifications for the Web-based Outlook-Calendar application. Useful in Linux (in Linux notifications do not work). Tested in Chrome 66.

目前为 2018-05-09 提交的版本。查看 最新版本

// ==UserScript==
// @name         Microsoft Calendar Notifications
// @namespace    http://tampermonkey.net/
// @version      1.0
// @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();
        var target = document.querySelector('.o365cs-notifications-notificationPopupArea');
        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
        });

    }

    function requestNotificationsPermission() {
        Notification.requestPermission().then(function(result) {
            console.log('Permiso para notificaciones de Outlook: ' + result);
        });
    }

    setTitleObserver();
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址