您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Permet de copier les données du deck
// ==UserScript== // @name DC - DeckExportData // @namespace http://tampermonkey.net/ // @version 1.1.0.Alpha // @description Permet de copier les données du deck // @author Mochizuki Kaneda Dii Amane [Amane-Mochizuki] // @match https://www.dreadcast.net/Main // @match https://dev.dreadcast.eu/Main // @icon https://www.google.com/s2/favicons?sz=64&domain=dreadcast.net // @grant none // @license CC-BY-NC-SA-4.0 // ==/UserScript== // CC-BY-NC-SA-4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/ // Changelog 1.1.0.Alpha // - réécriture du code pour éclater en sous fonction (permet de créer par la suite des commandes customs. // - ajout de la structure pour permettre la création de fonctions de traitement personalisés. // - Ajout commande "help exportdata" qui fournis une aide d'utilisation // - Ajout commande "exportdata -c" qui copie les données de manière automatique sans pop up // - modification comportement exportdata : remplacement du alert par un confirm avec un choix de copier ou non le contenu dans la popup. // Correction pour chrome, merci @Pelagia pour le signalement // - ajout de module possible pour écrire la dernière commande passé et le resultat dans le deck. // parfois bug et fait une duplication du contexte quand l'exécution est trop rapide :/ var version = "1.1.0.Alpha" var Global_DeckActif = false var process = false $(document).ajaxSuccess(function (e, xhr, opt) { if (document.getElementsByClassName("deck_main") != null && Global_DeckActif == false ) { // alert("deck actif") console.log("deck : actif") Global_DeckActif = true } }); $(document).ajaxSuccess(function (e, xhr, opt) { if (document.getElementsByClassName("deck_main") == null && Global_DeckActif == true ) { console.log("deck : fermé") Global_DeckActif = false } }); $(document).on("keydown", ".ligne_ecriture .texte:enabled", function (event) { if (event.key === "Enter") { process = false event.preventDefault(); var context = document.querySelector(".ligne_ecriture .contexte") var command = document.querySelector(".ligne_ecriture .texte:enabled") console.log("commande détectée : " + context.textContent + command.value ); // Select command var result = "" switch (command.value) { case "exportdata": result = exportdata(false); process = true; break; case "exportdata -c": result = exportdata(true); process = true; break; case "help exportdata": result = displayhelp(); process = true; break; default: process = false; // si aucune correspondance, on ne fait rien } // Select Result if (process == true){ SystemPrintResult(context.textContent, command.value, result) command.value = "" } } }); function exportdata(Silent) { var log = SystemGetBuffer() var result = "" var copy = false if (Silent == true) { copy = true } else { copy = confirm(log + "\n-------------------\nCliquez sur OK pour copier dans le presse-papier, sinon annuler pour fermer") } if (copy == true) { try { navigator.clipboard.writeText(log) result = "Données copiés avec succès." } catch (err) { result = "Échec de la copie : "+ err } } else { result = "Copie annulée par l'utilisateur." } return result } function displayhelp() { var result = `<span class="couleur_jaune"><strong>exportdata [-c] [Arguments]</strong> : </span><br /> Affiche et permet l'export (copie) des données du deck pour traitement externe<br /> Options : <br />   -c : <span style="color:#888;">Copie directement les données sans les afficher pour traitement externe</span><br /> Arguments : <br />   à venir : <span style="color:#888;">développement en cours...</span><br /> ` return result } function SystemGetBuffer() { var buffer = "" var zoneEcrite = document.querySelector(".zone_ecrit"); // Sélectionne la div principale if (!zoneEcrite) { console.log("Aucune zone_ecrite trouvée."); buffer = "" } else { var nbResultat = 0, nbContexte = 0, nbInput = 0 // Convertir en tableau et parcourir les enfants Array.from(zoneEcrite.children).forEach(element => { if (element.classList.contains("ligne_resultat_fixed")) { buffer += element.innerHTML + "\n"; nbResultat++; } if (element.classList.contains("ligne_ecrite_fixed")) { var contexte = element.querySelector("span.contexte") if (contexte) { buffer += contexte.textContent + " " // Ajoute le texte du span nbContexte++; } // Récupérer la valeur de l'input.texte s'il existe var input = element.querySelector("input.texte") if (input) { buffer += input.value + "\n" // Ajoute la valeur de l'input nbInput++; } } }); // Affichage des résultats console.log("Nombre de .ligne_ecrite_fixed:", nbContexte); console.log("Nombre de <input type='text'>:", nbInput); console.log("Nombre de .ligne_resultat_fixed:", nbResultat); buffer = buffer.replaceAll("<br>", "\n") buffer = buffer.replace(/<[^>]*>/g, ""); console.log("Contenu du buffer :", buffer); } return buffer } function SystemPrintResult(context, cmd, result) { let zoneEcrit = document.querySelector(".zone_ecrit"); if (zoneEcrit) { // Créer la première div let ligneEcrite = document.createElement("div"); ligneEcrite.className = "ligne_ecrite_fixed"; ligneEcrite.innerHTML = ` <span class="contexte">${context}</span> <input type="text" disabled="disabled" class="texte" value="${cmd}" style="color: rgb(255, 255, 255); border: 0px; background: 0px center; cursor: auto;"> `; // Créer la seconde div let ligneResultat = document.createElement("div"); ligneResultat.className = "ligne_resultat_fixed"; ligneResultat.innerHTML = result ; // Ajouter les nouvelles divs à la zone_ecrit zoneEcrit.appendChild(ligneEcrite); zoneEcrit.appendChild(ligneResultat); } }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址