Sujet résolu
L'auteur a trouvé une solution à son problème.
// ==UserScript==
// @name Onche.org Auto Balise [niveau]
// @namespace onche-auto-niveau
// @version 1.1
// @description Entoure automatiquement le message posté sur onche.org avec un niveau 10
// @match
https://onche.org/*
// @run-at document-idle
// @grant none
// ==/UserScript==
(function () {
'use strict';
// ----------------- CONFIGURATION -----------------
const NIVEAU = 10;
const OPEN_TAG = `[niveau=${NIVEAU}]`;
const CLOSE_TAG = `[/niveau]`;
// ---------------------------------------------------
function alreadyWrapped(text) {
const trimmed = text.trim();
return trimmed.startsWith(OPEN_TAG) && trimmed.endsWith(CLOSE_TAG);
}
function wrapTextarea(textarea) {
if (!textarea || !textarea.value.trim()) return;
if (alreadyWrapped(textarea.value)) return;
textarea.value = `${OPEN_TAG}${textarea.value}${CLOSE_TAG}`;
// Certains frameworks JS (Vue/React) écoutent l'event "input" pour
// synchroniser leur état interne avec le textarea : on le déclenche
// pour être sûr que la vraie valeur envoyée soit bien la version taguée.
textarea.dispatchEvent(new Event('input', { bubbles: true }));
}
function handleForm(form) {
const textarea = form.querySelector('textarea.composer__textarea, textarea[name="message"]');
wrapTextarea(textarea);
}
// Cas 1 : soumission classique du formulaire (submit)
document.addEventListener(
'submit',
function (e) {
const form = e.target;
if (!(form instanceof HTMLFormElement)) return;
if (!form.classList.contains('composer')) return;
handleForm(form);
},
true // capture : on modifie AVANT que le formulaire ne parte
);
// Cas 2 : clic sur le bouton "Envoyer" (au cas où le submit est intercepté en JS)
document.addEventListener(
'click',
function (e) {
const btn = e.target.closest('button.composer__send');
if (!btn) return;
const form = btn.closest('form.composer');
if (form) handleForm(form);
},
true
);
// Cas 3 : raccourci clavier Ctrl+Entrée (affiché dans l'UI : "Ctrl ↵")
document.addEventListener(
'keydown',
function (e) {
if (!(e.ctrlKey && e.key === 'Enter')) return;
const textarea = e.target.closest('textarea.composer__textarea');
if (!textarea) return;
const form = textarea.closest('form.composer');
if (form) handleForm(form);
},
true
);
})();

// @name Onche.org Auto Balise [niveau]
// @namespace onche-auto-niveau
// @version 1.1
// @description Entoure automatiquement le message posté sur onche.org avec un niveau 10
// @match
// @run-at document-idle
// @grant none
// ==/UserScript==
(function () {
'use strict';
// ----------------- CONFIGURATION -----------------
const NIVEAU = 10;
const OPEN_TAG = `[niveau=${NIVEAU}]`;
const CLOSE_TAG = `[/niveau]`;
// ---------------------------------------------------
function alreadyWrapped(text) {
const trimmed = text.trim();
return trimmed.startsWith(OPEN_TAG) && trimmed.endsWith(CLOSE_TAG);
}
function wrapTextarea(textarea) {
if (!textarea || !textarea.value.trim()) return;
if (alreadyWrapped(textarea.value)) return;
textarea.value = `${OPEN_TAG}${textarea.value}${CLOSE_TAG}`;
// Certains frameworks JS (Vue/React) écoutent l'event "input" pour
// synchroniser leur état interne avec le textarea : on le déclenche
// pour être sûr que la vraie valeur envoyée soit bien la version taguée.
textarea.dispatchEvent(new Event('input', { bubbles: true }));
}
function handleForm(form) {
const textarea = form.querySelector('textarea.composer__textarea, textarea[name="message"]');
wrapTextarea(textarea);
}
// Cas 1 : soumission classique du formulaire (submit)
document.addEventListener(
'submit',
function (e) {
const form = e.target;
if (!(form instanceof HTMLFormElement)) return;
if (!form.classList.contains('composer')) return;
handleForm(form);
},
true // capture : on modifie AVANT que le formulaire ne parte
);
// Cas 2 : clic sur le bouton "Envoyer" (au cas où le submit est intercepté en JS)
document.addEventListener(
'click',
function (e) {
const btn = e.target.closest('button.composer__send');
if (!btn) return;
const form = btn.closest('form.composer');
if (form) handleForm(form);
},
true
);
// Cas 3 : raccourci clavier Ctrl+Entrée (affiché dans l'UI : "Ctrl ↵")
document.addEventListener(
'keydown',
function (e) {
if (!(e.ctrlKey && e.key === 'Enter')) return;
const textarea = e.target.closest('textarea.composer__textarea');
if (!textarea) return;
const form = textarea.closest('form.composer');
if (form) handleForm(form);
},
true
);
})();
il y a 2 heures
Sponsorisé
Connectez-vous pour masquer les pubsNiveau 11
Sérieusement c'est quoi ton problème ?
Le mec de Matt Damon dans la peau te stalk ou tu veux juste nous casser les couilles ?
Le mec de Matt Damon dans la peau te stalk ou tu veux juste nous casser les couilles ?
il y a 2 heures
Sérieusement c'est quoi ton problème ?
Le mec de Matt Damon dans la peau te stalk ou tu veux juste nous casser les couilles ?
Le mec de Matt Damon dans la peau te stalk ou tu veux juste nous casser les couilles ?
Niveau 12
Désactiver les signatures : Mon profil/modifier/apparence
il y a 2 heures
8 c’est un bon compromis, 10 c’est trop
Ce fdp n'explique même pas pourquoi il fait ça, il pollue les topics avec ses post qu'on peut pas lire
il y a 2 heures
Sponsorisé
Connectez-vous pour masquer les pubsParce que c’est un PD qui comprend pas que cliquer une fois en plus pour lire ses messages de merde, ça fait chier
il y a 2 heures
StopGoy
2h
J'ai l'impression d'être Blacklist
Pour pas que les fédéraux voix ce qu'il écrit
Souverainiste et royaliste.
il y a 2 heures
Pareil je peux plus rien lire
il y a 2 heures
Sérieusement c'est quoi ton problème ?
Le mec de Matt Damon dans la peau te stalk ou tu veux juste nous casser les couilles ?
Le mec de Matt Damon dans la peau te stalk ou tu veux juste nous casser les couilles ?
il y a 2 heures
En ligne
219
Sur ce sujet0























