您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a button that leads to MyAnimeList.
// ==UserScript== // @name MAL Button at anime-loads.org Anime search // @namespace MAL-Button // @version 1.0 // @description Adds a button that leads to MyAnimeList. // @author Sebirate // @match https://www.anime-loads.org/anime* // @match https://www.anime-loads.org/anime-series* // @match https://www.anime-loads.org/all* // @match https://www.anime-loads.org/anime-movies* // @match https://www.anime-loads.org/ova* // @match https://www.anime-loads.org/special* // @match https://www.anime-loads.org/bonus* // @match https://www.anime-loads.org/ova* // @match https://www.anime-loads.org/web* // @match https://www.anime-loads.org/search* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // Funktion, um den Button zu erstellen function createButton(container, animeTitle) { // Überprüfen, ob der Button bereits existiert if (container.querySelector('.mal-search-button')) { return; // Wenn ja, nichts weiter tun } // Button erstellen const button = document.createElement('button'); button.type = 'button'; button.className = 'btn btn-sm btn-default mal-search-button'; button.textContent = 'Search on MyAnimeList'; button.style.marginTop = '10px'; button.style.marginLeft = '10px'; // Event-Listener hinzufügen button.addEventListener('click', function() { if (animeTitle) { const malSearchUrl = `https://myanimelist.net/search/all?cat=all&q=${encodeURIComponent(animeTitle)}`; window.open(malSearchUrl, '_blank'); } else { alert('Anime title not found'); } }); // Button in das Container einfügen container.appendChild(button); } // Funktion zum Hinzufügen des Buttons zu allen relevanten Panels function addButtonToPanels() { const panels = document.querySelectorAll('.panel-body'); panels.forEach(panel => { // Überprüfen, ob das Panel in der Description enthalten ist const isInDescription = panel.closest('#description'); if (!isInDescription) { // Anime-Titel aus dem Panel extrahieren const animeTitleElement = panel.querySelector('.title-list a'); const animeTitle = animeTitleElement ? animeTitleElement.textContent.trim() : null; createButton(panel, animeTitle); } }); } // Funktion zum Hinzufügen des Buttons zur Description function addButtonToDescription() { const descriptionTab = document.querySelector('#description'); if (descriptionTab) { // Anime-Titel aus dem <td> Element extrahieren const animeTitleElement = descriptionTab.querySelector('td'); const animeTitle = animeTitleElement ? animeTitleElement.childNodes[0].textContent.trim() : null; createButton(descriptionTab, animeTitle); } } // Überwachung der Tab-Änderungen function observeTabChanges() { const descriptionTabLink = document.querySelector('a[href="#description"]'); if (descriptionTabLink) { descriptionTabLink.addEventListener('click', () => { setTimeout(() => { const descriptionTab = document.querySelector('#description'); if (descriptionTab && !descriptionTab.querySelector('.mal-search-button')) { addButtonToDescription(); } }, 100); // Timeout, um sicherzustellen, dass der Tab-Inhalt geladen ist }); } } // Funktionen nach dem Laden der Seite ausführen window.addEventListener('load', () => { addButtonToPanels(); observeTabChanges(); }); })();