// ==UserScript== // @name Leetcode Timer // @description:en Start a timer whenever a user loads a problem at Leetcode.com // @version 1.1 // @grant none // @include *://*leetcode.com/problems/* // @author ketankr9 // @namespace https://greasyfork.org/users/564674 // @description Start a timer whenever a user loads a problem at Leetcode.com // @downloadURL none // ==/UserScript== function countdownTimer() { var difference = +new Date() - startTime; var elapsed = "0"; var parts = { days: Math.floor(difference / (1000 * 60 * 60 * 24)), hours: Math.floor((difference / (1000 * 60 * 60)) % 24), minutes: Math.floor((difference / 1000 / 60) % 60), seconds: Math.floor((difference / 1000) % 60) }; elapsed = Object.keys(parts) .map(part => { if (!parts[part]) return; return `${parts[part]} ${part}`; }) .join(" "); document.getElementById("countdown").innerHTML = elapsed; } var f = function(div){ var el = document.createElement("div"); el.className = "tool-item__2DCU"; el.innerHTML = '
'; div.insertBefore(el, div.firstChild); startTime = +new Date(); setInterval(countdownTimer, 1000); } function waitForElementToDisplay(selector, time, f) { var node = document.getElementsByClassName(selector); console.log(node); if(node.length > 0) { console.log("Element Found"); f(node[0]) return; } setTimeout(function() { waitForElementToDisplay(selector, time, f); }, time); } var startTime; waitForElementToDisplay("btns__1OeZ", 1000, f);