Reddit Dropdown Menu

Adds a dropdown menu with links to r/all and r/popular

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @license MIT
// @name         Reddit Dropdown Menu
// @namespace    http://tampermonkey.net/
// @version      0.2.5-Beta
// @description  Adds a dropdown menu with links to r/all and r/popular
// @author       Daniel Vasquez
// @match        https://*.reddit.com/*
// @grant        none
// ==/UserScript==
(function() {
    'use strict';

    // Create dropdown menu container
    let dropdown = document.createElement("div");
    dropdown.textContent = "RMenu"; // Text for the dropdown button
    dropdown.style.position = "fixed";
    dropdown.style.top = "6px";
    dropdown.style.right = "5px";
    dropdown.style.zIndex = "1000";
    dropdown.style.padding = "10px 20px";
    dropdown.style.backgroundColor = "#FF4500";
    dropdown.style.border = "none";
    dropdown.style.color = "white";
    dropdown.style.borderRadius = "5px";
    dropdown.style.cursor = "pointer";
    dropdown.style.textAlign = "center";

    // Style for the dropdown content
    let dropdownContentStyle = "display: none; position: fixed; right: 10px; top: 46px; background-color: #f9f9f9; min-width: 160px; box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); z-index: 1001; border-radius: 5px;";

    // Create dropdown content
    let dropdownContent = document.createElement("div");
    dropdownContent.style = dropdownContentStyle;

    // Timeout variable to manage the hover state
    let hoverTimeout;

    // Create menu items
    function createMenuItem(text, href) {
        let item = document.createElement("a");
        item.textContent = text;
        item.href = href;
        item.style.color = "black";
        item.style.padding = "12px 16px";
        item.style.textDecoration = "none";
        item.style.display = "block";
        item.onmouseover = function() { this.style.backgroundColor = "#f1f1f1"; };
        item.onmouseout = function() { this.style.backgroundColor = "#f9f9f9"; };
        return item;
    }

    // Append items to dropdown content
    dropdownContent.appendChild(createMenuItem("Go to r/all", "https://www.reddit.com/r/all/"));
    dropdownContent.appendChild(createMenuItem("Go to r/popular", "https://www.reddit.com/r/popular/"));

    // Show dropdown content on hover and reset the timeout
    dropdown.onmouseover = function() {
        clearTimeout(hoverTimeout);
        dropdownContent.style.display = "block";
    };

    // Hide dropdown content after a delay
    dropdown.onmouseout = function() {
        hoverTimeout = setTimeout(function() {
            dropdownContent.style.display = "none";
        }, 500); // 500 milliseconds delay
    };

    // Append dropdown content to dropdown
    dropdown.appendChild(dropdownContent);

    // Append dropdown to the body
    document.body.appendChild(dropdown);

    // Move the profile button to avoid overlap
    let profileButton = document.querySelector("#USER_DROPDOWN_ID"); // Replace with the actual ID or class of the Reddit profile button
    if (profileButton) {
        profileButton.style.right = "1px"; // Adjust as needed to move the profile button
    }
})();