Kheys
2 109
modifications
user: 413ff04 (?) (Merci Rand pour la complete, j'avais des fonctions plus primaires.) |
|||
| (23 versions intermédiaires par 3 utilisateurs non affichées) | |||
| Ligne 160 : | Ligne 160 : | ||
==== JavaScript ==== | ==== JavaScript ==== | ||
function | function jvCare(classe) { | ||
const base16 = '0A12B34C56D78E9F'; | const base16 = '0A12B34C56D78E9F'; | ||
let lien = <nowiki>''</nowiki>; | let lien = <nowiki>''</nowiki>; | ||
| Ligne 246 : | Ligne 246 : | ||
<s>messageTextArea.value = message;</s> | <s>messageTextArea.value = message;</s> | ||
Heureusement, il existe pour cela '''une fonction très utilisée''' sur le web : | |||
function fonctionreact(textarea, value) { | function fonctionreact(textarea, value) { | ||
| Ligne 255 : | Ligne 255 : | ||
} | } | ||
Ensuite il | Ensuite, il suffit simplement de faire appel à cette fonction quand on doit remplir une zone de texte : | ||
fonctionreact(messageTextArea, message); | fonctionreact(messageTextArea, message); | ||
En 1er on donne | En 1er on donne la zone de texte ciblée et en 2nd le texte à insérer. | ||
Pour simplifier, <code><span style="color:red;">messageTextArea</span>.value = <span style="color:green;">message</span>;</code> devient <code>fonctionreact(<span style="color:red;">messageTextArea</span>, <span style="color:green;">message</span>);</code> avec cette fonction. | Pour simplifier, <code><span style="color:red;">messageTextArea</span>.value = <span style="color:green;">message</span>;</code> devient <code>fonctionreact(<span style="color:red;">messageTextArea</span>, <span style="color:green;">message</span>);</code> avec cette fonction. | ||
=== Fonction officielle JVC === | |||
Par ailleurs, en dehors de cette méthode, JVC a proposé une entrée native pour interagir directement avec REACT :<br> | |||
<code>jvc.getMessageEditor();</code> (C'est une entrée partielle, pour réaliser des fonctions officielles du site.) | |||
https://www.jeuxvideo.com/forums/message/1286112457 | |||
jvc.getMessageEditor(".class").insertText(`mon texte`); // Place du texte à l'endroit sur le focus | |||
jvc.getMessageEditor(".class").insertStartLine(`mon texte`); // Place du texte en début de ligne. | |||
jvc.getMessageEditor(".class").selectedText; // Récupérer la sélection utilisateur. | |||
PS : Pour garantir le bon fonctionnement, utilisez simplement jvc.getMessageEditor(); '''sans le préfixe "window"'''<ref>Les userscripts sont exécutés dans un environnement isolé (appelé sandbox), ce qui empêche parfois l’accès direct aux objets définis dans le contexte global de la page, comme "window" .</ref>. <br> | |||
Il est nécessaire de faire appel à <code>jvc.getMessageEditor();</code> à chaque modification, sinon vous travaillerez avec une version antérieure de la zone de texte. | |||
Cette fonction prend directement en compte des sélecteurs CSS et pas des éléments, exemple : | |||
let selector = "#message_topic" | |||
jvc.getMessageEditor(selector).insertText('text'); //✅ Marche | |||
let selector = document.getElementById("message_topic") | |||
jvc.getMessageEditor(selector).insertText('text'); //❌ Ne marche pas | |||
Cependant, cette fonction présente plusieurs avantages notables : elle est à la fois native à JVC et intégrée au fonctionnement de React. | |||
De plus, contrairement à une modification directe du champ texte via JavaScript, cette fonction ne nécessite aucune gestion manuelle du curseur, de la sélection ou des espaces, tout est automatiquement pris en charge par la fonction elle-même. | |||
En revanche, pour manipuler le champ entièrement (suppression, remplacement) {{fleched}} la fonction a moins d'intérêt.<br> | |||
De plus, elle ne fonctionne que sur JVC, et ce n'est pas une fonction JavaScript universelle, contrairement à la précédente. | |||
== Liens externes == | == Liens externes == | ||