Skip to content

Instantly share code, notes, and snippets.

@NeraSnow
Created December 25, 2023 05:46
Show Gist options
  • Save NeraSnow/79165e9fbc70b916b76356a12c14bb2c to your computer and use it in GitHub Desktop.
Save NeraSnow/79165e9fbc70b916b76356a12c14bb2c to your computer and use it in GitHub Desktop.
LeetCode Get Question Topics
// ==UserScript==
// @name New Userscript
// @namespace http://tampermonkey.net/
// @version 2023-12-25
// @description try to take over the world!
// @author You
// @match https://leetcode.com/problems/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=leetcode.com
// @grant none
// ==/UserScript==
// Function to get the text content of <a> elements inside the specified <div>
function getTextContent() {
// Select the div element
const divElement = document.querySelector('.mt-2.flex.gap-1.pl-7');
// Select all the <a> elements inside the div
const aElements = divElement.querySelectorAll('a');
// Create an array to store the text content of each <a> element
const textArray = [];
// Iterate over each <a> element and store its text content in the array
aElements.forEach((a) => {
textArray.push(`"${a.textContent}"`);
});
// Log the array to the console (you can do other things with the array here)
copyToClipboard(`"topic": [${textArray}]`,)
}
function copyToClipboard(text) {
navigator.clipboard.writeText(text)
.then(() => {
console.log('Text successfully copied to clipboard');
})
.catch((err) => {
console.error('Unable to copy text to clipboard', err);
});
}
// Create a button element
const buttonElement = document.createElement('button');
buttonElement.textContent = 'Get Topics';
// Add an onClick event listener to the button, linking it to the getTextContent function
buttonElement.addEventListener('click', getTextContent);
// Add styles to make the button a floating element
buttonElement.style.position = 'fixed';
buttonElement.style.top = '13px'; // Adjust the top position as needed
buttonElement.style.right = '450px'; // Adjust the right position as needed
buttonElement.style.zIndex = '9999'; // Ensure it's on top of other elements
buttonElement.style.backgroundColor = 'rgba(255, 255, 255, 0.5)'; // 50% transparent white background
// Add an onClick event listener to the button, linking it to the getTextContent function
buttonElement.addEventListener('click', getTextContent);
function doStuff() {
// Select the div with the specified class
// const targetDivElement = document.querySelector('.relative.ml-4.flex.items-center.gap-2');
// console.log(targetDivElement);
// Prepend the button to the selected div
document.body.prepend(buttonElement);
}
doStuff();
/*
if (document.readyState !== 'loading') {
console.log('document is already ready, just execute code here');
setTimeout(doStuff(), 1000);
} else {
console.log("What?");
}
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment