您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Desktop Notifications for DHM
当前为
// ==UserScript== // @name DHM Desktop Notifications // @namespace http://tampermonkey.net/ // @version 1.1 // @description Desktop Notifications for DHM // @author level // @match https://dhm.idle-pixel.com/ // @run-at document-idle // @grant none // @license MIT // ==/UserScript== var VERSION_NUMBER = "1.1"; window.addEventListener("load", function() { console.log('Loading DHM Helper...'); var loaded = false; loading(); var Hinterval = setInterval(loading, 100); function loading() { if (loaded === false) { console.log("Loaded DHM Helper"); loaded = true; addStyles(); createNav(); createMenu(); init(); } } function addStyles() { let style = document.createElement('style'); style.innerHTML = ` #dhm-helper-menu { position: absolute; background: white; width: 700px; height: 777px; max-width: 100%; max-height: 100%; z-index: 10000; top: 50%; left: 50%; transform: translate(-50%, -50%); box-shadow: black 0 0 15px 1px; overflow-y: auto; } #dhm-helper-menu h1, #dhm-helper-menu span, #dhm-helper-menu p { color: black; text-align: center; } #dhm-helper-menu h1 img { margin: 0 10px 0 10px; } #dhm-helper-menu h1 img:nth-child(1) { transform: scaleX(-1); } .dhm-helper-headerContainer { text-align: center; } #dhm-helper-menu hr { background-color: #e0e0e0; width: 100%; } .dhm-helper-inputContainer { max-width: 400px; margin: 0 auto; height: 40px; display: flex; justify-content: space-between; align-items: center; } .dhm-helper-inputContainer input[type="checkbox"] { width: 20px; height: 20px; } .dhm-helper-inputContainer-sub input[type="checkbox"] { margin-left: 25px; } .dhm-helper-inputContainer-sub-sub input[type="checkbox"] { margin-left: 50px; } .dhm-helper-inputContainer label { color: black; font-size: 20px; } #dhm-helper-menu span { color: #5a5a5a; padding: 5px; } .dialogue-button { border:1px solid silver; background-color:#e6e6e6; border-radius:3pt; color:black; font-size:14pt; text-align:center; cursor:pointer; padding:10px; }`; document.head.appendChild(style); } function createNav() { let navItem = document.createElement('div'); let miscTab = document.querySelectorAll("#tab-misc > .main-button"); navItem.innerHTML = `<div onclick="window.toggleMenu2()" class="main-button" style="cursor: pointer;"> <table> <tbody><tr> <td><img src="images/bronzeStarLamp.png" class="img-small"></td> <td style="text-align:right;padding-right:20px;font-size:12pt;">DESKTOP NOTFICATIONS</td> </tr> </tbody></table> </div>`; miscTab[2].parentNode.insertBefore(navItem,miscTab[3]); } function createMenu() { let menu = document.createElement('div'); menu.setAttribute('id', 'dhm-helper-menu'); menu.style.display = 'none'; let closeButton = document.createElement('div'); closeButton.setAttribute('class', 'dialogue-button'); closeButton.innerText = "Close"; closeButton.addEventListener('click', toggleMenu) menu.appendChild(closeButton); let headerContainer = document.createElement('div'); headerContainer.setAttribute('class', 'dhm-helper-headerContainer'); let header = document.createElement('h1'); let headerImage = document.createElement('img'); headerImage.setAttribute('src', 'images/bronzeStarLamp.png'); headerImage.setAttribute('class', 'img-medium'); let headerImage2 = headerImage.cloneNode(true); header.innerText = "DHM Helper"; header.insertBefore(headerImage, header.firstChild); header.appendChild(headerImage2); headerContainer.appendChild(header); let version = document.createElement('span'); version.innerText = "Version: " + VERSION_NUMBER; headerContainer.appendChild(version); menu.appendChild(headerContainer); let hr = document.createElement('hr'); menu.appendChild(hr); // Global Notifications Checkbox let notificationsInputContainer = document.createElement('div'); notificationsInputContainer.setAttribute('class', 'dhm-helper-inputContainer'); let notificationsInput = document.createElement('input'); notificationsInput.setAttribute('type', 'checkbox'); notificationsInput.setAttribute('name', 'dhm-notificationsInput'); notificationsInput.setAttribute('data-storage', 'hNotifications'); if (localStorage.hNotifications === "true") { notificationsInput.setAttribute('checked', 'checked'); } notificationsInput.addEventListener("change", grantNotifications); let notificationsLabel = document.createElement('label'); notificationsLabel.setAttribute('for', 'checkbox'); notificationsLabel.innerText = "Desktop Notifications"; notificationsInputContainer.append(notificationsInput); notificationsInputContainer.append(notificationsLabel); menu.appendChild(notificationsInputContainer); // Daily Mission Notifications Checkbox let dailyInputContainer = document.createElement('div'); dailyInputContainer.setAttribute('class', 'dhm-helper-inputContainer dhm-helper-inputContainer-sub'); let dailyInput = document.createElement('input'); dailyInput.setAttribute('type', 'checkbox'); dailyInput.setAttribute('name', 'dhm-notificationsInput'); dailyInput.setAttribute('data-storage', 'hDaily'); if (localStorage.hDaily === "true") { dailyInput.setAttribute('checked', 'checked'); } dailyInput.addEventListener("change", toggleStorage); let dailyLabel = document.createElement('label'); dailyLabel.setAttribute('for', 'checkbox'); dailyLabel.innerText = "Daily Mission Notifications"; dailyInputContainer.append(dailyInput); dailyInputContainer.append(dailyLabel); menu.appendChild(dailyInputContainer); // Treasure Map Notifications Checkbox let mapInputContainer = document.createElement('div'); mapInputContainer.setAttribute('class', 'dhm-helper-inputContainer dhm-helper-inputContainer-sub'); let mapInput = document.createElement('input'); mapInput.setAttribute('type', 'checkbox'); mapInput.setAttribute('name', 'dhm-notificationsInput'); mapInput.setAttribute('data-storage', 'hMap'); if (localStorage.hMap === "true") { mapInput.setAttribute('checked', 'checked'); } mapInput.addEventListener("change", toggleStorage); let mapLabel = document.createElement('label'); mapLabel.setAttribute('for', 'checkbox'); mapLabel.innerText = "Treasure Map Notifications"; mapInputContainer.append(mapInput); mapInputContainer.append(mapLabel); menu.appendChild(mapInputContainer); // Event Notifications Checkbox let eventInputContainer = document.createElement('div'); eventInputContainer.setAttribute('class', 'dhm-helper-inputContainer dhm-helper-inputContainer-sub'); let eventInput = document.createElement('input'); eventInput.setAttribute('type', 'checkbox'); eventInput.setAttribute('name', 'dhm-notificationsInput'); eventInput.setAttribute('data-storage', 'hEvent'); if (localStorage.hEvent === "true") { eventInput.setAttribute('checked', 'checked'); } eventInput.addEventListener("change", toggleStorage); let eventLabel = document.createElement('label'); eventLabel.setAttribute('for', 'checkbox'); eventLabel.innerText = "Event Notifications"; eventInputContainer.append(eventInput); eventInputContainer.append(eventLabel); menu.appendChild(eventInputContainer); // Research Notifications Checkbox let researchInputContainer = document.createElement('div'); researchInputContainer.setAttribute('class', 'dhm-helper-inputContainer dhm-helper-inputContainer-sub'); let researchInput = document.createElement('input'); researchInput.setAttribute('type', 'checkbox'); researchInput.setAttribute('name', 'dhm-notificationsInput'); researchInput.setAttribute('data-storage', 'hResearch'); if (localStorage.hResearch === "true") { researchInput.setAttribute('checked', 'checked'); } researchInput.addEventListener("change", toggleStorage); let researchLabel = document.createElement('label'); researchLabel.setAttribute('for', 'checkbox'); researchLabel.innerText = "Research Notifications"; researchInputContainer.append(researchInput); researchInputContainer.append(researchLabel); menu.appendChild(researchInputContainer); // Train Notifications Checkbox let trainInputContainer = document.createElement('div'); trainInputContainer.setAttribute('class', 'dhm-helper-inputContainer dhm-helper-inputContainer-sub'); let trainInput = document.createElement('input'); trainInput.setAttribute('type', 'checkbox'); trainInput.setAttribute('name', 'dhm-notificationsInput'); trainInput.setAttribute('data-storage', 'hTrain'); if (localStorage.hTrain === "true") { trainInput.setAttribute('checked', 'checked'); } trainInput.addEventListener("change", toggleStorage); let trainLabel = document.createElement('label'); trainLabel.setAttribute('for', 'checkbox'); trainLabel.innerText = "Train Notifications"; trainInputContainer.append(trainInput); trainInputContainer.append(trainLabel); menu.appendChild(trainInputContainer); // Rocket Notifications Checkbox let rocketInputContainer = document.createElement('div'); rocketInputContainer.setAttribute('class', 'dhm-helper-inputContainer dhm-helper-inputContainer-sub'); let rocketInput = document.createElement('input'); rocketInput.setAttribute('type', 'checkbox'); rocketInput.setAttribute('name', 'dhm-notificationsInput'); rocketInput.setAttribute('data-storage', 'hRocket'); if (localStorage.hRocket === "true") { rocketInput.setAttribute('checked', 'checked'); } rocketInput.addEventListener("change", toggleStorage); let rocketLabel = document.createElement('label'); rocketLabel.setAttribute('for', 'checkbox'); rocketLabel.innerText = "Rocket Notifications"; rocketInputContainer.append(rocketInput); rocketInputContainer.append(rocketLabel); menu.appendChild(rocketInputContainer); // Furnace Notifications Checkbox let furnaceInputContainer = document.createElement('div'); furnaceInputContainer.setAttribute('class', 'dhm-helper-inputContainer dhm-helper-inputContainer-sub'); let furnaceInput = document.createElement('input'); furnaceInput.setAttribute('type', 'checkbox'); furnaceInput.setAttribute('name', 'dhm-notificationsInput'); furnaceInput.setAttribute('data-storage', 'hFurnace'); if (localStorage.hFurnace === "true") { furnaceInput.setAttribute('checked', 'checked'); } furnaceInput.addEventListener("change", toggleStorage); let furnaceLabel = document.createElement('label'); furnaceLabel.setAttribute('for', 'checkbox'); furnaceLabel.innerText = "Furnace Notifications"; furnaceInputContainer.append(furnaceInput); furnaceInputContainer.append(furnaceLabel); menu.appendChild(furnaceInputContainer); // Foundry Notifications Checkbox let foundryInputContainer = document.createElement('div'); foundryInputContainer.setAttribute('class', 'dhm-helper-inputContainer dhm-helper-inputContainer-sub'); let foundryInput = document.createElement('input'); foundryInput.setAttribute('type', 'checkbox'); foundryInput.setAttribute('name', 'dhm-notificationsInput'); foundryInput.setAttribute('data-storage', 'hFoundry'); if (localStorage.hFoundry === "true") { foundryInput.setAttribute('checked', 'checked'); } foundryInput.addEventListener("change", toggleStorage); let foundryLabel = document.createElement('label'); foundryLabel.setAttribute('for', 'checkbox'); foundryLabel.innerText = "Foundry Notifications"; foundryInputContainer.append(foundryInput); foundryInputContainer.append(foundryLabel); menu.appendChild(foundryInputContainer); // Refinary Notifications Checkbox let refinaryInputContainer = document.createElement('div'); refinaryInputContainer.setAttribute('class', 'dhm-helper-inputContainer dhm-helper-inputContainer-sub'); let refinaryInput = document.createElement('input'); refinaryInput.setAttribute('type', 'checkbox'); refinaryInput.setAttribute('name', 'dhm-notificationsInput'); refinaryInput.setAttribute('data-storage', 'hRefinary'); if (localStorage.hRefinary === "true") { refinaryInput.setAttribute('checked', 'checked'); } refinaryInput.addEventListener("change", toggleStorage); let refinaryLabel = document.createElement('label'); refinaryLabel.setAttribute('for', 'checkbox'); refinaryLabel.innerText = "Refinary Notifications"; refinaryInputContainer.append(refinaryInput); refinaryInputContainer.append(refinaryLabel); menu.appendChild(refinaryInputContainer); // Tree Notifications Checkbox let treeInputContainer = document.createElement('div'); treeInputContainer.setAttribute('class', 'dhm-helper-inputContainer dhm-helper-inputContainer-sub'); let treeInput = document.createElement('input'); treeInput.setAttribute('type', 'checkbox'); treeInput.setAttribute('name', 'dhm-notificationsInput'); treeInput.setAttribute('data-storage', 'hTree'); if (localStorage.hTree === "true") { treeInput.setAttribute('checked', 'checked'); } treeInput.addEventListener("change", toggleStorage); let treeLabel = document.createElement('label'); treeLabel.setAttribute('for', 'checkbox'); treeLabel.innerText = "Tree Notifications"; treeInputContainer.append(treeInput); treeInputContainer.append(treeLabel); menu.appendChild(treeInputContainer); // Tree Notifications Checkbox let shinyTreeInputContainer = document.createElement('div'); shinyTreeInputContainer.setAttribute('class', 'dhm-helper-inputContainer dhm-helper-inputContainer-sub'); let shinyTreeInput = document.createElement('input'); shinyTreeInput.setAttribute('type', 'checkbox'); shinyTreeInput.setAttribute('name', 'dhm-notificationsInput'); shinyTreeInput.setAttribute('data-storage', 'hShinyTree'); if (localStorage.hShinyTree === "true") { shinyTreeInput.setAttribute('checked', 'checked'); } shinyTreeInput.addEventListener("change", toggleStorage); let shinyTreeLabel = document.createElement('label'); shinyTreeLabel.setAttribute('for', 'checkbox'); shinyTreeLabel.innerText = "Shiny Tree Notifications"; shinyTreeInputContainer.append(shinyTreeInput); shinyTreeInputContainer.append(shinyTreeLabel); menu.appendChild(shinyTreeInputContainer); // Planter Notifications Checkbox let planterInputContainer = document.createElement('div'); planterInputContainer.setAttribute('class', 'dhm-helper-inputContainer dhm-helper-inputContainer-sub'); let planterInput = document.createElement('input'); planterInput.setAttribute('type', 'checkbox'); planterInput.setAttribute('name', 'dhm-notificationsInput'); planterInput.setAttribute('data-storage', 'hPlanter'); if (localStorage.hPlanter === "true") { planterInput.setAttribute('checked', 'checked'); } planterInput.addEventListener("change", toggleStorage); let planterLabel = document.createElement('label'); planterLabel.setAttribute('for', 'checkbox'); planterLabel.innerText = "Planter Notifications"; planterInputContainer.append(planterInput); planterInputContainer.append(planterLabel); menu.appendChild(planterInputContainer); // Explorer Notifications Checkbox let explorerInputContainer = document.createElement('div'); explorerInputContainer.setAttribute('class', 'dhm-helper-inputContainer dhm-helper-inputContainer-sub'); let explorerInput = document.createElement('input'); explorerInput.setAttribute('type', 'checkbox'); explorerInput.setAttribute('name', 'dhm-notificationsInput'); explorerInput.setAttribute('data-storage', 'hExplorer'); if (localStorage.hExplorer === "true") { explorerInput.setAttribute('checked', 'checked'); } explorerInput.addEventListener("change", toggleStorage); let explorerLabel = document.createElement('label'); explorerLabel.setAttribute('for', 'checkbox'); explorerLabel.innerText = "Explorer Notifications"; explorerInputContainer.append(explorerInput); explorerInputContainer.append(explorerLabel); menu.appendChild(explorerInputContainer); // Cousin Notifications Checkbox let cousinInputContainer = document.createElement('div'); cousinInputContainer.setAttribute('class', 'dhm-helper-inputContainer dhm-helper-inputContainer-sub'); let cousinInput = document.createElement('input'); cousinInput.setAttribute('type', 'checkbox'); cousinInput.setAttribute('name', 'dhm-notificationsInput'); cousinInput.setAttribute('data-storage', 'hCousin'); if (localStorage.hCousin === "true") { cousinInput.setAttribute('checked', 'checked'); } cousinInput.addEventListener("change", toggleStorage); let cousinLabel = document.createElement('label'); cousinLabel.setAttribute('for', 'checkbox'); cousinLabel.innerText = "Cousin Notifications"; cousinInputContainer.append(cousinInput); cousinInputContainer.append(cousinLabel); menu.appendChild(cousinInputContainer); // Boat Notifications Checkbox let boatInputContainer = document.createElement('div'); boatInputContainer.setAttribute('class', 'dhm-helper-inputContainer dhm-helper-inputContainer-sub'); let boatInput = document.createElement('input'); boatInput.setAttribute('type', 'checkbox'); boatInput.setAttribute('name', 'dhm-notificationsInput'); boatInput.setAttribute('data-storage', 'hBoat'); if (localStorage.hBoat === "true") { boatInput.setAttribute('checked', 'checked'); } boatInput.addEventListener("change", toggleStorage); let boatLabel = document.createElement('label'); boatLabel.setAttribute('for', 'checkbox'); boatLabel.innerText = "Boat Notifications"; boatInputContainer.append(boatInput); boatInputContainer.append(boatLabel); menu.appendChild(boatInputContainer); // Chef Notifications Checkbox let chefInputContainer = document.createElement('div'); chefInputContainer.setAttribute('class', 'dhm-helper-inputContainer dhm-helper-inputContainer-sub'); let chefInput = document.createElement('input'); chefInput.setAttribute('type', 'checkbox'); chefInput.setAttribute('name', 'dhm-notificationsInput'); chefInput.setAttribute('data-storage', 'hChef'); if (localStorage.hChef === "true") { chefInput.setAttribute('checked', 'checked'); } chefInput.addEventListener("change", toggleStorage); let chefLabel = document.createElement('label'); chefLabel.setAttribute('for', 'checkbox'); chefLabel.innerText = "Chef Notifications"; chefInputContainer.append(chefInput); chefInputContainer.append(chefLabel); menu.appendChild(chefInputContainer); // Goblin Shop Notifications Checkbox let goblinShopInputContainer = document.createElement('div'); goblinShopInputContainer.setAttribute('class', 'dhm-helper-inputContainer dhm-helper-inputContainer-sub'); let goblinShopInput = document.createElement('input'); goblinShopInput.setAttribute('type', 'checkbox'); goblinShopInput.setAttribute('name', 'dhm-notificationsInput'); goblinShopInput.setAttribute('data-storage', 'hGoblinShop'); if (localStorage.hGoblinShop === "true") { goblinShopInput.setAttribute('checked', 'checked'); } goblinShopInput.addEventListener("change", toggleStorage); let goblinShopLabel = document.createElement('label'); goblinShopLabel.setAttribute('for', 'checkbox'); goblinShopLabel.innerText = "Goblin Shop Notifications"; goblinShopInputContainer.append(goblinShopInput); goblinShopInputContainer.append(goblinShopLabel); menu.appendChild(goblinShopInputContainer); document.body.appendChild(menu); } function grantNotifications() { if (localStorage["hNotifications"] && localStorage["hNotifications"] == "true") { localStorage["hNotifications"] = "false"; } else { if (Notification.permission !== "granted") { Notification.requestPermission(function(permission) { if (permission === "granted") { localStorage["hNotifications"] = "true"; } else { alert("You will need to need desktop notifcations for DHM alerts to work.") } }); } else { localStorage["hNotifications"] = "true"; } } } function toggleStorage() { let name = this.getAttribute('data-storage'); if (localStorage[name] && localStorage[name] == "true") { localStorage[name] = "false"; } else { localStorage[name] = "true"; } } function toggleMenu() { let menu = document.getElementById('dhm-helper-menu'); menu.style.display = menu.style.display === 'none' ? '' : 'none'; } window.toggleMenu2 = toggleMenu function init() { // Daily Mission var dailyObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-dailyMissionNotification").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hDaily === "true")) { var notification = new Notification("Daily Mission Available",{ icon: 'images/dailyMissions.png' }); } } }); }); var dailyTarget = document.getElementById('notification-dailyMissionNotification'); dailyObserver.observe(dailyTarget, { attributes : true, attributeFilter : ['style'] }); // Treasure Map var mapObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-treasureMapNotification").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hMap === "true")) { var notification = new Notification("Treasure Map Found",{ icon: 'images/treasureMap.png' }); } } }); }); var mapTarget = document.getElementById('notification-treasureMapNotification'); mapObserver.observe(mapTarget, { attributes : true, attributeFilter : ['style'] }); // Green Treasure Map var greenMapObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-greenTreasureMapNotification").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hMap === "true")) { var notification = new Notification("Green Treasure Map Found",{ icon: 'images/greenTreasureMap.png' }); } } }); }); var greenMapTarget = document.getElementById('notification-greenTreasureMapNotification'); greenMapObserver.observe(greenMapTarget, { attributes : true, attributeFilter : ['style'] }); // Event var eventObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("main-button-event").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hEvent === "true")) { var notification = new Notification("Event Coming",{ icon: 'images/meteorEvent.png' }); } } }); }); var eventTarget = document.getElementById('main-button-event'); eventObserver.observe(eventTarget, { attributes : true, attributeFilter : ['style'] }); // Event Glowing var glowingObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-eventFullyActiveNotification").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hEvent === "true")) { var notification = new Notification("Event Glowing",{ icon: 'images/meteorActionEvent.png' }); } } }); }); var glowingTarget = document.getElementById('notification-eventFullyActiveNotification'); glowingObserver.observe(glowingTarget, { attributes : true, attributeFilter : ['style'] }); // Researcher var researchObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-researcherNotification").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hResearch === "true")) { var notification = new Notification("Research Ready",{ icon: 'images/researcher.png' }); } } }); }); var researchTarget = document.getElementById('notification-researcherNotification'); researchObserver.observe(researchTarget, { attributes : true, attributeFilter : ['style'] }); // Train Ready var trainObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-profileNotificationsOffTrain").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hTrain === "true")) { var notification = new Notification("Train Ready",{ icon: 'images/train.png' }); } } }); }); var trainTarget = document.getElementById('notification-profileNotificationsOffTrain'); trainObserver.observe(trainTarget, { attributes : true, attributeFilter : ['style'] }); // Train at Destination var trainDestinationObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-trainNotification").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hTrain === "true")) { var notification = new Notification("Train Ready To Collect",{ icon: 'images/train.png' }); } } }); }); var trainDestinationTarget = document.getElementById('notification-trainNotification'); trainDestinationObserver.observe(trainDestinationTarget, { attributes : true, attributeFilter : ['style'] }); // Rocket Ready var rocketObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-profileNotificationsOffRocket").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hRocket === "true")) { var notification = new Notification("Rocket Ready",{ icon: 'images/rocket.png' }); } } }); }); var rocketTarget = document.getElementById('notification-profileNotificationsOffRocket'); rocketObserver.observe(rocketTarget, { attributes : true, attributeFilter : ['style'] }); // Rocket at Destination var rocketDestinationObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-rocketNotification").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hRocket === "true")) { var notification = new Notification("Rocket Ready To Collect",{ icon: 'images/rocket.png' }); } } }); }); var rocketDestinationTarget = document.getElementById('notification-rocketNotification'); rocketDestinationObserver.observe(rocketDestinationTarget, { attributes : true, attributeFilter : ['style'] }); // Furnace Idle var furnaceObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-profileNotificationsOffFurnace").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hFurnace === "true")) { var notification = new Notification("Furnace Empty",{ icon: 'images/goldFurnace.png' }); } } }); }); var furnaceTarget = document.getElementById('notification-profileNotificationsOffFurnace'); furnaceObserver.observe(furnaceTarget, { attributes : true, attributeFilter : ['style'] }); // Foundry Idle var foundryObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-charcoalFoundryPercentage").style.display == "none") { if ((localStorage.hNotifications === "true") && (localStorage.hFoundry === "true")) { var notification = new Notification("Foundry Empty",{ icon: 'images/charcoalFoundry.png' }); } } }); }); var foundryTarget = document.getElementById('notification-charcoalFoundryPercentage'); foundryObserver.observe(foundryTarget, { attributes : true, attributeFilter : ['style'] }); // Refinary Idle var refinaryObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-goldBarRefineryNotification").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hRefinary === "true")) { var notification = new Notification("Refinary Ready",{ icon: 'images/goldRefinary.png' }); } } }); }); var refinaryTarget = document.getElementById('notification-goldBarRefineryNotification'); refinaryObserver.observe(refinaryTarget, { attributes : true, attributeFilter : ['style'] }); // Tree Ready var treeObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-treeNotification").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hTree === "true")) { var notification = new Notification("Tree Ready",{ icon: 'images/tree.png' }); } } }); }); var treeTarget = document.getElementById('notification-treeNotification'); treeObserver.observe(treeTarget, { attributes : true, attributeFilter : ['style'] }); // Shiny Tree var shinyTree1Observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("tree-thumbnail-img-1").style.backgroundImage == 'url("images/shiny.gif")') { if ((localStorage.hNotifications === "true") && (localStorage.hShinyTree === "true")) { var notification = new Notification("Shiny Tree Growing",{ icon: 'images/shiny.gif' }); } } }); }); var shinyTree1Target = document.getElementById('tree-thumbnail-img-1'); shinyTree1Observer.observe(shinyTree1Target, { attributes : true, attributeFilter : ['style'] }); //2 var shinyTree2Observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("tree-thumbnail-img-2").style.backgroundImage == 'url("images/shiny.gif")') { if ((localStorage.hNotifications === "true") && (localStorage.hShinyTree === "true")) { var notification = new Notification("Shiny Tree Growing",{ icon: 'images/shiny.gif' }); } } }); }); var shinyTree2Target = document.getElementById('tree-thumbnail-img-2'); shinyTree2Observer.observe(shinyTree2Target, { attributes : true, attributeFilter : ['style'] }); //3 var shinyTree3Observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("tree-thumbnail-img-3").style.backgroundImage == 'url("images/shiny.gif")') { if ((localStorage.hNotifications === "true") && (localStorage.hShinyTree === "true")) { var notification = new Notification("Shiny Tree Growing",{ icon: 'images/shiny.gif' }); } } }); }); var shinyTree3Target = document.getElementById('tree-thumbnail-img-3'); shinyTree3Observer.observe(shinyTree3Target, { attributes : true, attributeFilter : ['style'] }); //4 var shinyTree4Observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("tree-thumbnail-img-4").style.backgroundImage == 'url("images/shiny.gif")') { if ((localStorage.hNotifications === "true") && (localStorage.hShinyTree === "true")) { var notification = new Notification("Shiny Tree Growing",{ icon: 'images/shiny.gif' }); } } }); }); var shinyTree4Target = document.getElementById('tree-thumbnail-img-4'); shinyTree4Observer.observe(shinyTree4Target, { attributes : true, attributeFilter : ['style'] }); //5 var shinyTree5Observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("tree-thumbnail-img-5").style.backgroundImage == 'url("images/shiny.gif")') { if ((localStorage.hNotifications === "true") && (localStorage.hShinyTree === "true")) { var notification = new Notification("Shiny Tree Growing",{ icon: 'images/shiny.gif' }); } } }); }); var shinyTree5Target = document.getElementById('tree-thumbnail-img-5'); shinyTree5Observer.observe(shinyTree5Target, { attributes : true, attributeFilter : ['style'] }); //6 var shinyTree6Observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("tree-thumbnail-img-6").style.backgroundImage == 'url("images/shiny.gif")') { if ((localStorage.hNotifications === "true") && (localStorage.hShinyTree === "true")) { var notification = new Notification("Shiny Tree Growing",{ icon: 'images/shiny.gif' }); } } }); }); var shinyTree6Target = document.getElementById('tree-thumbnail-img-6'); shinyTree6Observer.observe(shinyTree6Target, { attributes : true, attributeFilter : ['style'] }); // Planter Empty var planterObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-profileNotificationsOffPlanter").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hPlanter === "true")) { var notification = new Notification("Planter Idle",{ icon: 'images/planter.png' }); } } }); }); var planterTarget = document.getElementById('notification-profileNotificationsOffPlanter'); planterObserver.observe(planterTarget, { attributes : true, attributeFilter : ['style'] }); // Explorer Idle var explorerObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-exploringNotification").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hExplorer === "true")) { var notification = new Notification("Explorer Idle",{ icon: 'images/explorer.png' }); } } }); }); var explorerTarget = document.getElementById('notification-exploringNotification'); explorerObserver.observe(explorerTarget, { attributes : true, attributeFilter : ['style'] }); // Cousin Idle var cousinObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-exploringNotification2").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hCousin === "true")) { var notification = new Notification("Cousin Idle",{ icon: 'images/goblinCousin.png' }); } } }); }); var cousinTarget = document.getElementById('notification-exploringNotification2'); cousinObserver.observe(cousinTarget, { attributes : true, attributeFilter : ['style'] }); // Boat Idle var boatObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-rowBoatNotification").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hBoat === "true")) { var notification = new Notification("Boat Ready",{ icon: 'images/rowBoat.png' }); } } }); }); var boatTarget = document.getElementById('notification-rowBoatNotification'); boatObserver.observe(boatTarget, { attributes : true, attributeFilter : ['style'] }); // Canoe Idle var canoeObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-canoeBoatNotification").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hBoat === "true")) { var notification = new Notification("Canoe Ready",{ icon: 'images/canoeBoat.png' }); } } }); }); var canoeTarget = document.getElementById('notification-canoeBoatNotification'); canoeObserver.observe(canoeTarget, { attributes : true, attributeFilter : ['style'] }); // Sail Idle var sailObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-sailBoatNotification").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hBoat === "true")) { var notification = new Notification("Sail Ready",{ icon: 'images/sailBoat.png' }); } } }); }); var sailTarget = document.getElementById('notification-sailBoatNotification'); sailObserver.observe(sailTarget, { attributes : true, attributeFilter : ['style'] }); // Steam Idle var steamObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-steamBoatNotification").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hBoat === "true")) { var notification = new Notification("Steam Ready",{ icon: 'images/steamBoat.png' }); } } }); }); var steamTarget = document.getElementById('notification-steamBoatNotification'); steamObserver.observe(steamTarget, { attributes : true, attributeFilter : ['style'] }); // Trawler Idle var trawlerObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-trawlerNotification").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hBoat === "true")) { var notification = new Notification("Trawler Ready",{ icon: 'images/trawler.png' }); } } }); }); var trawlerTarget = document.getElementById('notification-trawlerNotification'); trawlerObserver.observe(trawlerTarget, { attributes : true, attributeFilter : ['style'] }); // Chef Ready var chefObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-chefNotification").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hChef === "true")) { var notification = new Notification("Chef Ready",{ icon: 'images/chef.png' }); } } }); }); var chefTarget = document.getElementById('notification-chefNotification'); chefObserver.observe(chefTarget, { attributes : true, attributeFilter : ['style'] }); // Goblin Shop var goblinShopObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { if (document.getElementById("notification-gemGoblinShopNotification").style.display !== "none") { if ((localStorage.hNotifications === "true") && (localStorage.hGoblinShop === "true")) { var notification = new Notification("Goblin Shop New Items",{ icon: 'images/gemGoblinShopIcon.png' }); } } }); }); var goblinShopTarget = document.getElementById('notification-gemGoblinShopNotification'); goblinShopObserver.observe(goblinShopTarget, { attributes : true, attributeFilter : ['style'] }); } });
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址