Searchable Bookmarks

Dead Frontier-Allows you to save, edit, and quickly search for frequently used items with a movable frame and hover effects

当前为 2024-10-10 提交的版本,查看 最新版本

// ==UserScript==
// @name         Searchable Bookmarks
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Dead Frontier-Allows you to save, edit, and quickly search for frequently used items with a movable frame and hover effects
// @author       SHUNHK
// @match        https://fairview.deadfrontier.com/onlinezombiemmo/index.php?page=35
// @icon         https://i.imgur.com/rcXom8b.jpeg
// @license      MIT License
// ==/UserScript==

(function() {
    'use strict';

    // Create a small frame for input and display
    const frame = document.createElement('div');
    frame.style.position = 'fixed';
    frame.style.top = '10px';
    frame.style.right = '10px';
    frame.style.width = '220px';
    frame.style.padding = '10px';
    frame.style.backgroundImage = 'url(https://i.imgur.com/rcXom8b.jpeg)'; // Set background image
    frame.style.backgroundSize = 'cover';
    frame.style.border = '1px solid #ccc';
    frame.style.borderRadius = '5px';
    frame.style.boxShadow = '0 0 10px rgba(0, 0, 0, 0.1)';
    frame.style.zIndex = '1000';
    frame.style.cursor = 'move';
    document.body.appendChild(frame);

    // Make the frame draggable
    frame.onmousedown = function(event) {
        let shiftX = event.clientX - frame.getBoundingClientRect().left;
        let shiftY = event.clientY - frame.getBoundingClientRect().top;

        function moveAt(pageX, pageY) {
            frame.style.left = pageX - shiftX + 'px';
            frame.style.top = pageY - shiftY + 'px';
        }

        function onMouseMove(event) {
            moveAt(event.pageX, event.pageY);
        }

        document.addEventListener('mousemove', onMouseMove);

        frame.onmouseup = function() {
            document.removeEventListener('mousemove', onMouseMove);
            frame.onmouseup = null;
        };
    };

    frame.ondragstart = function() {
        return false;
    };

    // Create input field
    const input = document.createElement('input');
    input.type = 'text';
    input.placeholder = 'Enter item to search';
    input.style.width = 'calc(100% - 22px)';
    input.style.marginBottom = '10px';
    input.style.padding = '5px';
    input.style.border = '1px solid #ccc';
    input.style.borderRadius = '3px';
    frame.appendChild(input);

    // Create save button
    const saveButton = document.createElement('button');
    saveButton.innerText = 'Save';
    saveButton.style.padding = '5px 10px';
    saveButton.style.border = 'none';
    saveButton.style.backgroundColor = '#007bff';
    saveButton.style.color = 'white';
    saveButton.style.borderRadius = '3px';
    saveButton.style.cursor = 'pointer';
    saveButton.style.transition = 'background-color 0.3s';
    frame.appendChild(saveButton);

    // Create list to display saved items
    const list = document.createElement('ul');
    list.style.listStyleType = 'none';
    list.style.padding = '0';
    list.style.marginTop = '10px';
    frame.appendChild(list);

    // Load saved items from localStorage
    const savedItems = JSON.parse(localStorage.getItem('savedItems')) || [];
    savedItems.forEach(item => {
        addItemToList(item);
    });

    // Save button click event
    saveButton.addEventListener('click', () => {
        const item = input.value.trim();
        if (item) {
            savedItems.push(item);
            localStorage.setItem('savedItems', JSON.stringify(savedItems));
            addItemToList(item);
            input.value = '';
        }
    });

    // Function to add item to the list
    function addItemToList(item) {
        const listItem = document.createElement('li');
        listItem.style.display = 'flex';
        listItem.style.justifyContent = 'space-between';
        listItem.style.alignItems = 'center';
        listItem.style.padding = '5px 0';
        listItem.style.borderBottom = '1px solid #ccc';

        const itemText = document.createElement('span');
        itemText.innerText = item;
        itemText.style.cursor = 'pointer';
        itemText.style.color = 'White'; // Set text color to black
        itemText.style.transition = 'color 0.3s';
        itemText.addEventListener('dblclick', () => {
            searchForItem(item);
        });
        itemText.addEventListener('mouseover', () => {
            itemText.style.color = '#007bff'; // Highlight on hover
        });
        itemText.addEventListener('mouseout', () => {
            itemText.style.color = 'White'; // Reset color
        });

        const editButton = document.createElement('button');
        editButton.innerText = 'Edit';
        editButton.style.marginRight = '5px';
        editButton.style.padding = '2px 5px';
        editButton.style.border = 'none';
        editButton.style.backgroundColor = '#ffc107';
        editButton.style.color = 'white';
        editButton.style.borderRadius = '3px';
        editButton.style.cursor = 'pointer';
        editButton.style.transition = 'background-color 0.3s';
        editButton.addEventListener('click', () => {
            const newItem = prompt('Edit item:', item);
            if (newItem) {
                const index = savedItems.indexOf(item);
                if (index !== -1) {
                    savedItems[index] = newItem;
                    localStorage.setItem('savedItems', JSON.stringify(savedItems));
                    itemText.innerText = newItem;
                }
            }
        });
        editButton.addEventListener('mouseover', () => {
            editButton.style.backgroundColor = '#e0a800'; // Highlight on hover
        });
        editButton.addEventListener('mouseout', () => {
            editButton.style.backgroundColor = '#ffc107'; // Reset color
        });

        const deleteButton = document.createElement('button');
        deleteButton.innerText = 'Delete';
        deleteButton.style.padding = '2px 5px';
        deleteButton.style.border = 'none';
        deleteButton.style.backgroundColor = '#dc3545';
        deleteButton.style.color = 'white';
        deleteButton.style.borderRadius = '3px';
        deleteButton.style.cursor = 'pointer';
        deleteButton.style.transition = 'background-color 0.3s';
        deleteButton.addEventListener('click', () => {
            const index = savedItems.indexOf(item);
            if (index !== -1) {
                savedItems.splice(index, 1);
                localStorage.setItem('savedItems', JSON.stringify(savedItems));
                listItem.remove();
            }
        });
        deleteButton.addEventListener('mouseover', () => {
            deleteButton.style.backgroundColor = '#c82333'; // Highlight on hover
        });
        deleteButton.addEventListener('mouseout', () => {
            deleteButton.style.backgroundColor = '#dc3545'; // Reset color
        });

        listItem.appendChild(itemText);
        listItem.appendChild(editButton);
        listItem.appendChild(deleteButton);
        list.appendChild(listItem);
    }

    // Function to search for item
    function searchForItem(item) {
        console.log(`Searching for: ${item}`);
        // Add your search logic here
        const searchField = document.getElementById('searchField');
        if (searchField) {
            searchField.value = item;
            const searchButton = document.getElementById('makeSearch');
            if (searchButton) {
                searchButton.click();
            }
        }
    }
})();

QingJ © 2025

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